const是一个关键字,用于字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。使用const在一定程度上可以提高程序的安全性和可靠性.说道这里,大家可能都会想到readonly关键字,其修饰的变量也是只读的,不能被修改.那么这两者有什么区别呢?
在介绍之前,还是先看例子:
常类型是指使用const说明的类型,定义或说明常类型时必须进行初始化,且不能再被赋值:
1.const int i;//报错:常量字段要求提供一个值;
2. const int i=3;
i=5;//报错:赋值号左边必须是变量、属性或索引器3. readonly int a;不会报错
常对象定义:
const 类名 对象名[(参数列表)];
或 类名 const 对象名[(参数列表)];
如:
class A
{
private int x,y;
public A(int i,int j){x=i;y=j}
}
const A a1(3,4); A class a2(5,6);
a1和a2都是常对象,不能被更新;
区别:
readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数,如下面的代码行所示:public static readonly uint l1 = (uint)DateTime.Now.Ticks;
注意:
不允许在常数声明中使用 static 修饰符。