一周学会C#(类三)

**

一周学会 C# (类三)

C# 才鸟( QQ:249178521 )

**

** 8. ** ** 常量字段 ** ** **

· **_ 常量字段 _ ** ** ... **

w ** 隐含为 ** **_ static _ ** ** **

w ** 必须在声明时初始化 ** ** **

w ** 必须被初始化为编译时常量值 ** ** **

w ** 只有简单类型,枚举,字符串才可以是常量 ** ** **

** class Pair **

** { **

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

** { **

** // ??? **

** } **

** ... **

** private const int x = 0, y = 0; **

** } **

在 C# 中,常量字段隐含为 static ,但你不能显式声明一个常量字段是 static :

static const int x = 0;// 错误

常量必须被初始化,并且只能在声明时初始化:

const int x;// 错误

常量必须被初始化为编译时常量值:

const int x = Method();// 错误

只有简单类型,枚举,字符串才能被声明为常量:

const Pair p = new Pair();// 错误

** 9. ** ** 静态构造函数 ** ** **

· ** 静态构造函数初始化类 ** ** **

w ** 可以初始化 ** **_ static _ ** ** ** ** 字段而不是 ** ** c onst ** ** 字段 ** ** **

w ** 当类被装载时由 ** ** .net ** ** 调用 ** ** **

w ** 不能被调用:没有参数,没有访问修饰符 ** ** **

** class Pair **

** { **

** public static readonly Pair Origin; **

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

** { **

** this.x = x; **

** this.y = y; **

** } **

** static Pair() **

** { **

** Origin = new Pair(0, 0); **

** } **

** private int x, y; **

** } **

静态构造函数只能由 .net 调用,而不能由程序员调用。这保证它会被调用,只被调用一次,并且在恰当的时候被调用(在任何类或类被使用前)。因为程序员不能调用静态构造函数,所以静态构造函数没有参数。出于同样的原因,静态构造函数不能有访问修饰符。

静态构造函数不能被用来初始化常量字段,即使常量字段隐式为静态的。因为前面说过,常量字段必须被初始化,而且只能在它声明的时候初始化。

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