C#基本知识点
一、C#与.NET的关系
.NET的核心是CLR(公共语言运行时)。在CLR中运行的代码,我们称为“托管代码”。
我们写的代码在运行之前,会经过两个编译阶段:
1、 把源代码编译为IL(Microsoft中间语言)
2、 CLR把IL编译为平台专用的代码。
IL(Microsoft中间语言)的主要特征:
A、面向对象和使用接口:实现给定接口的类,就必须提供该接口的所有方法和属性的实现。
B、值类型和引用类型之间的巨大差别:对于值类型,变量直接保存其数据,而对于引用类型,变量仅仅保存数据的地址。值类型一般存储在堆栈中,引用类型一般存储在托管堆中。
C、强数据类型:所有的变量都明确的被标记为某个特定的数据类型,不允许对模糊数据类型执行操作。不过在.NET 3.5中也加入了模糊数据类型。
D、使用异常来处理错误
E、使用属性(attribute):用户定义的Attribute和其对应的数据类型或方法的元数据放在一起,这对于文档说明很有用,它们和反射技术一起使用,执行特定的任务。
二、程序集(Assembly):是包含编译好的、面向.NET Framework的代码的逻辑单元。
三、反射:因为程序集中存储了元数据,包括在程序集中定义的所有类型和方法,所以可以编程访问这些元数据。这种技术就称为反射。
四、命名空间:是.NET避免类名冲突的一种方式。
System是.Net的基本命名空间
为了避免冲突,一般采用自己公司的域名做为命名空间。
Console.WriteLine是其中的一个方法。
C#基础
一、变量
1、变量的初始化
C#编译器需要每个变量在有了初始值之后才能使用该变量。
变量是类或者结构中的字段,如果没有显式的初始化,在默认状态下,创建这些变量时,其初始值就是0。
方法中的变量,必须显式的初始化,否则在编译时会报错。
2、 变量的作用域
A、只要变量所属的类在某个作用域内,其字段(也叫做成员变量)也在该作用域中。
B、局部变量存在于声明该变量的块语句或方法结束的大括号之前的作用域。
C、在for、while循环中声明的变量,只存在于该循环体内。
3、常量:在声明变量时,在变量前面加上const关键字就可以把该变量指定为一个常量。
A、常量必须在声明的时候就初始化,而且其赋值后就不能再改变了。
B、常量总是静态的(static),不必在声明常量时添加static关键字。
二、预定义类型
1、值类型和引用类型
C#中的数据类型,可以分为值类型和引用类型,值类型存储在堆栈上,而引用类型存储在托管堆上。
如下代码示例:
int i=10;
int j=i;
i和j的值都是10,并且在内存中会有两个地方存储10。
再看下面的代码
Vector x=newVector();
x.Value=20;
Vector y=x;
Console.WriteLine(y.Value);
y.Value=50;
Console.WriteLine(x.Value);
Vector是一个引用类型,引用类型在使用的时候需要new来实例化一个。这段代码执行后,只有一个Vector对象,x、y都指向包含该对象的内存地址。因为x、y存储的都是对象的引用,所以当y改变的时候,x也会改变。所以该程序输出的结果是20和50。
如果变量是一个引用,可以把其值设置为null,表示不指向任何对象。
2、 CTS类型
C#的预定义类型并没有内置于语言中,而是内置于.NET Framework中,比如声明一个int类型时,实际上是.NET结构的System.Int32的一个实例。这说明,可以把所有基本数据类型看作是支持某些方法的类。
3、 预定义的值类型(部分)
A、整型
sbyte,8位有符号的整数,范围从-128到127。
byte,8位无符号的整数,范围从0到255。
short,16位有符号的整数,范围从-32768到32767
ushort,16位无符号的整数,范围从0到65535
int,32位有符号的整数,范围从-2147483648到2147483647
uint,32位无符号的整数,范围从0到4294967295
long,64位有符号的整数
ulong,64位无符号的整数
B、decimal类型:财务专用数据类型,128位高精度十进制表示法。要把数据指定为decimal类型,只需在数字后面加上M(或m)
4、 预定义引用类型
A、object类型:C#的基类,所有类都派生自它,所以可以用object引用绑定任何子类型的对象
B、string类型:string类型是属于引用类型。在修改一个字符串的时候,实际上是创建了一个新的字符串,而并非修改了原来的字符串。
三、跳转语句
break和continue的区别:break直接跳出循环;continue不跳出循环,只是该次循环不执行,直接执行下次循环。
return一般用于退出类或者方法。如果方法有返回类型,则return语句必须返回这个类型的值。
四、 数组:所有的数组都是引用类型。
五、 命名空间
可以使用using简化命名空间,例:usinggosoa=www.gosoa.com.cn;
知识点积累:
按行读取文件的两种方法:
1、StreamReader.ReadLine()
2、读取所有的行用stringlines=File.ReadAllLines(string path, Encoding encoding);
然后用foreach迭代取出每行
问题:P19枚举 P24get与set方法怎么用