9.14 只读字段和常数
如果想将某个字段声明为只读的,可以使用readonly关键字,如:
private readonly string name;
如果在声明只读字段的时候没有为它赋值,还可以在构造函数中为它赋值。除此之外,无法对只读字段重新赋值,如果尝试赋值,就会收到如下错误信息,意思是无法给一个只读字段赋值,除非在构造函数或者变量初始化语句中:
A readonly field cannot be assigned to(except in a constructor or a variable initializer)
下面就是可以对只读变量初始化的两种方式,如代码清单9-39所示。
代码清单9-39 只读字段的初始化
class Car
{
//声明时进行初始化
private readonly string name="BENZ";
public Car()
{
//在构造函数中初始化只读字段
name="Polo";
}
//属性
public string Name
{
get
{
return name;
}
}
}
常数(使用const关键字修饰)和只读字段有些类似,但它们有本质的区别。接下来,介绍常数的特性:
❑常数必须在声明的时候就初始化,然后就再也不能改变;
❑常数从编译时开始就保持不变,而不是像只读字段那样可以在运行时再指定。
为了便于说明,请参考表9-7。