发布日期:2023-03-31来源:武汉北大青鸟武汉校区作者:武汉宏鹏
浅谈C#中的const和readonly修饰的字段-武汉北大青鸟技术文章
在C#中用const来修饰“常量”字段,用readonly来修饰“只读”字段,这两种类型的字段都有一个共同的特征就是“不能更改”。那么在同一个语言中,为什么用两个不同的关键字来修饰字段的“不可更改”性呢?其实这是完两种不同的机制。下表将详细讲解这两个看是相似其实不同的“只读”:
归纳点
const
readonly
意义
由const修饰的字段或局部变量的值是常数,值不能被修改
当字段声明包含readonly修饰符时,表明该字段为只读字段,值将不能修改
语法与样例
1:classCircle
2:{
3: publicconstfloatPI =3.14f;
4:
5: privatefloatradius;
6: publicfloatRadius
7:
{
8:
get {returnthis.radius; }
9:
set {this.radius =value; }
10:
}
11:
12: publicfloatGirth
13:
{
14:
get {returnthis.radius*2*PI;}
15:
}
16:}
1:classStudent
2:{
3: publicreadonlystringClassNo ="55";
4:
5: publicStudent() { }
6:
7: publicStudent(stringclassNo)
8:
{
9: this.ClassNo = classNo;
10:
}
11:}
赋值时机
const字段有且有一次赋值的机会,那就是在常量字段声明时初始化。
readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值。
使用方式
类的const字段类似与类的静态字段,不能通过this来访问,只能通过类名来访问。
类的readonly字段是实例化字段,可以通过this来访问,访问方式与一般字段一样。
其他
const字段为编译时常数,其值将在编译时固定写入到程序集中
而readonly字段为运行时常数,可以在声明后,在同一类的不同构造函数中赋不同的值。
想了解更多C语言技术请继续关注武汉北大青鸟官网,咨询热线:17740513250。
Copyright (c) 2006-2023 武汉宏鹏教育咨询有限公司 版权所有 All Rights Reserved.