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。

9.14 只读字段和常数 - 图1