今天进行了C#的初步学习,主要了解了C#的相关知识:
基础语法
首先是在C#里的基础语法,大致与C++还有Java类似,可以说是二者的结合体,基本的Hello World!
代码如下所示:
using System;
namespace HelloWorldApplication
{
class HelloWorld
{
static void Main(String[] args)
{
/*我的第一个C#程序*/
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
多看几遍,就会发现里面的语法非常熟悉。
数据类型
然后就是C#的数据类型,可以通过下文看出,与C++基本一致。包括指针的定义方法等等,如出一辙。
值类型
如果你想快速获得一个变量类型的长度,可以用以下代码来实现:
using System;
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
引用类型
引用类型在我看来就是可以将一个类型的值转换成其它类型的值,但是不如动态类型多样化。
object obj;
obj = 100; // 这是装箱
动态(Dynamic)类型
动态类型就是可以用该类型的变量来代表任何值,他并不是一个固定的值,例如:dynamic d = 20;
。
字符串类型
这个是我们最熟悉的类型了,用法一致,但是要注意前面可能会加上@
,这个是为了让字符串里面的一些特殊字符来进行转义,就比如string str = @"C:\Windows";
与string str = "C:\\Windows";
二者是等价的。
指针类型
指针类型大家都应该是很熟悉了,C#中的指针的功能与C++完全一致,没有区别哦。
类型转换
类型转换分为显式跟隐式两种,显式是强制转换,很有可能造成数据丢失,如:double d=3.14; int i=(int)d
。但是隐式可能会更稳定,因为它采用的是C#默认的类型转换方法:
namespace TypeConversionApplication
{
class StringConversion
{
static void Main(string[] args)
{
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;
Console.WriteLine(i.ToString());
Console.WriteLine(f.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(b.ToString());
Console.ReadKey();
}
}
}
上式运行结果如下:
变量
C#里的变量赋值与C++一模一样,主要记一下从控制台获取数据的语法,就像在控制台输出一样,输出用的是WriteLine();
,而从控制台获取数据用的是int num; num = Convert.ToInt32(Console.ReadLine());
。
函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。
大致用法如下:
using System;
namespace TypeConversionApplication
{
class StringConversion
{
static void Main(string[] args)
{
int a;
int b;
int c;
a = Convert.ToInt32(Console.ReadLine());
b = Convert.ToInt32(Console.ReadLine());
c = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("a:{0},b:{1},c:{2}",a,b,c);
Console.ReadKey();
}
}
}
常量
整数常量里前面如果没有前缀就代表的是十进制,如果加上了前缀,例如0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制
。
字符常量,前面带个\的就是转义的:
字符串常量都是放在""
或者@""
里面的,不要忘记二者的区别。
定义常量的方式: public const int c1 = 5; public const int c2 = c1 + 5;
。
运算符
运算符与C++一模一样,不做过多复述:
运算符的优先级如下所示:
判断
循环
封装
封装还是老三样:public
,private
,protected
。不过好像还多了两种,第一种是Internal
:就是该定义的变量或者函数可以被该类之中任何方法访问,派生类无法访问。第二种是Protected Internal
:只允许在本类、派生类以及继承的类中访问。