c#中const和readonly区别
时间:2011-04-21 来源:zhxhdean
一:概念
const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。不允许在常数声明中使用 static 修饰符。
readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
二:区别
1.const是一个包含不能修改的值的变量,是在编译时可被完全计算的表达式。因此不能从一个变量中提取的值来初始化常量。
如果 const int a = b+1;b是一个变量,显然不能再编译时就计算出结果,所以常量是不可以用变量来初始化的。readonly是在运行时执行的,因此能从一个变量中提取的值来初始化常量。
2.const只能被声明为简单的数据类型(内建的int和浮点型)、枚举或字符串,不能用new关键字初始化一个静态常量,即便是对一个值类型来说。 readonly 可以是任意的数据类型。
//这样是错误的
public const DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
//这样是可以的
public static readonly DateTime myDateTime = new DateTime(2006,9,1,0,0,0);
总结:const外部不能对其赋值,而readonly外部可以对其赋值。
相关阅读 更多 +