一周学会C#(结构二)

**

一周学会 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 ** 用户自定义结构类型 ** ** **

§ ** 没有一个关键字别名 ** ** **

§ ** 没有数值表达式 ** ** **

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