一周学会C#(类二)

**

一周学会 C# (类二)

C# 才鸟( QQ:249178521 )

**

** 5. ** ** 实例字段 ** ** **

· ** 实例字段 ** ** ... **

w ** 在所有的构造函数中被初始化为缺省值( ** ** 0/false/null ** ** ) ** ** **

w ** 可以在一构造函数中显式初始化 ** ** **

w ** 可以在它们声明时初始化 ** ** **

** sealed class Pair **

** { **

** public Pair(int x, int y) **

** { **

** this.x = x; **

** y = y; **

** } **

** ... **

** private int x; **

** private int y = 42; **

** } **

回忆一下:在结构的自定义构造函数必须显式初始化类中的所有实例字段。 结构的实例字段只能在构造函数中进行初始化,而不能使用赋值的方法。

而类则比结构方便的多。

类中的所有字段都缺省初始化为缺省值。

在类的构造函数中,你可以在字段声明时进行初始化。

在上面的例子中,构造函数的参数 y 用字段 y 来赋值。编译器通过的原因是字段 y 已经被赋初值。其实,如果没有对字段 y 进行初始化,编译器仍然会通过,困为字段 y 已有缺省值 0 ,所以在构造函数中没有显式初始化字段 y 是不会发生错误的。

** 6. ** ** 静态字段 ** ** **

· **_ 静态字段 _ ** ** ... __ **

w ** 被缺省初始化为 ** ** 0/ false / null **

w ** 可以在声明时初始化 ** ** **

w ** 只能通过类名访问 ** ** **

** class Pair **

** { **

** public Pair(int x, int y) **

** { **

** ... **

** } **

** private static Pair origin = new Pair(0,0); **

** ... **

** private int x, y; **

** } ** ** **

** Pair p = new Pair(); **

** ... **

** Method(p.origin); // ** ** 错误,只能通过类名访问 **

** Method(Pair.origin); // ** ** 正确 **

由 static 修饰符声明的字段称为静态变量。当类的声明装载时,静态变量就开始存在,直到程序结束时才消失。

静态变量的初值:

l 整型变量为 0 (包括枚举)

l 实型变量为 0.0

l bool 型变量为 false

l 引用型变量为 null

** 7. ** ** 只读字段 ** ** **

· **_ 只读字段 _ ** ** ... **

w ** 不能被赋值 ** ** **

w ** 不能被用作 ** **_ ref/out _ ** ** ** ** 型参数 **

** class Pair **

** { **

** public static readonly Pair Origin = new Pair(0,0); **

** public Pair(int x, int y) **

** { **

** this.x = x; **

** this.y = y; **

** } **

** public void Reset() **

** { **

** x = 0; // ** ** 错误 **

** Origin.x = 0; // ** ** 错误 **

** } **

** private readonly int x, y; **

** } **

Published At
Categories with Web编程
Tagged with
comments powered by Disqus