问:
private static readonly是什么样的含义
答:
private - 这个成员只能在本类内使用
static - 这个成员不需要实例化即可使用
readonly - 这个成员只能在“类初始化”时赋值
所谓的“类初始化”,是下面两者之一
1) 直接在定义后面写值,例如
private static readonly Hashtable SharedHashtable = new Hashtable();
2) 在“类构造函数”里写值,例如
static ClassName() {
SharedHashtable = new Hashtable();
}
如果看 1),感觉上好像跟 const 有点联系,但是 const 是在编译的时候就计算结果的,这样的话,多数引用类型都无法赋值——new 操作符只能在运行时使用。我所知道的可以写到 const 字段的引用类型就只有字符串一种。static readonly 的话,在第一次访问该类的时候才赋值,所以能用new,如上述例子
最后,const隐含static的语义,所以只需要写private const即可
几个名词及关系
类的实例化
类的初始化
类的加载