首先查看MSDN中提供的说明:
readonly关键字是可以在字段上使用的修饰符,当字段声明包括readonly,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中;
我个人觉得上面一句话就是限定了你用readonly修饰的字段的赋值操作的范围;
就以其给出的样例分析:
代码如下:
class Age
{
private readonly int _year;
Age(int year)
{
_year = year;
}
public void AgeChange(int years)
{
_year = years;
}
}
可以看到加了readonly限制的字段,其只能在声明的初始化时候或者在同一个类的构造函数中修改其值;在其他情况下都是只读字段;
与const的区别在于:
1.const只能在该字段的声明中初始化;readonly则是两种手段,一个是在字段声明时,此外还多了在构造函数中的声明;
2.const字段是在编译时为常数,readonly修饰的字段可用于运行时的常数;
至此,readonly用法和const区别都已经解释清楚了