**
一周学会 C# (结构二)
C# 才鸟( QQ:249178521 )
**
** 6. ** ** 实例字段 ** ** **
· ** 实例字段 ** ** ... **
w ** 缺省初始化是调用编译器声明的缺省构造函数 ** ** **
w ** 在用户自定义的构造函数中必须显式初始化 ** ** **
w ** 不能在它们声明时初始化 ** ** **
** struct Pair **
** { **
** public Pair(int x, int y) **
** { **
** this.x = x; **
** this.y = y; // ** ** 正确,所有的实例字段都被显式初始化 **
** } **
** ... **
** private int x, y; // ** ** 声明时没有被初始化 **
** } **
结构的自定义构造函数必须显式初始化结构中的所有实例字段。(在类的构造函数中不是这样的)
public BadPair(int x, int y)
{
this.x = x;// 没有定义 this.y
}
private int x, y;
结构的实例字段只能在构造函数中进行初始化,而不能使用赋值的方法。(在类的构造 函数中不是这样的)
private int x;
private int y = 0;// 在结构中是非法的
** 7. ** ** 静态字段 ** ** **
· **_ 静态字段 _ ** ** ... __ **
w ** 被缺省初始化为 ** ** 0/ false / null **
w ** 可以在声明时初始化 ** ** **
w ** 只能通过类名访问 ** ** **
** struct 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
** 8. ** ** 只读字段 ** ** **
· **_ 只读字段 _ ** ** ... **
w ** 不能被赋值 ** ** **
w ** 不能被用作 ** **_ ref/out _ ** ** ** ** 型参数 **
** struct 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; **
** } **
** 9. ** ** 术语 ** ** **
· ** 两种值类型 ** ** **
w **_ 枚举类型 _ ** ** **
w **_ 结构类型 _ ** ** **
· ** 两种结构类型 ** ** **
w ** 简单结构类型 ** ** **
§ ** 有一个关键字别名 ** ** ( ** ** 例如 ** ** System.Int32 == int ) **
§ ** 有数值表达式 ** ** ( ** ** 例如 ** ** , 42) **
w ** 用户自定义结构类型 ** ** **
§ ** 没有一个关键字别名 ** ** **
§ ** 没有数值表达式 ** ** **