const和readonly之间的区别
const是静态常量,在编译时的时候对常量解析,并将常量的值替换成初始化的那个值。
readonly是动态常量,在运行的时候才获得,在编译期间标识为只读常量。
const字段只能在该字段的声明中初始化;readonly字段可以在声明或构造函数中初始化。
const关键字
1.声明某个常量字段或局部变量,且不能修改。
2.常量可以是数字,布尔值,字符串,null引用。
3.不允许在常数声明中使用static修饰符。(const时静态常量,本身就是static,因此不能手动添加修饰符static)
注意:不要使用常量来表示你随时要更改的值。
static void Main(string[] args)
{
const int x = 1;
const int y = 2;
const string z = "abc";
const int i= x + y+ 10;//常数可以参与常数表达式
}
readonly关键字
1.可以在字段声明和构造函数中多次分配和重新分配只读字段。
2.声明时可以不设置常量值,可以在构造函数中进行设置。
3.readonly是实例成员,所以不同的实例可以有不同的常量值
4.readonly如果设置成静态的就必须显示声明。
5.readonly可以是任何类型。
注意:readonly时在运行时的变量,在运行第一次被赋值后,不可再变。