区别
const是一个编译期常量,readonly是一个运行时常量。
const只能修饰基元类型,枚举类型和字符串类型,readonly没有限制。
const变量的效率高,是因为经过编译器编译后,我们在代码中引用const变量的地方都会用const变量所对应的实际值来代替
const int ConstValue=100;// const 默认是静态的
Console.WriteLine(ConstValue); //IL代码是Console.WriteLine(100);
readonly赋值行为发生在运行时,它在运行时第一次被赋值后将不可以改变。
readonly另一个灵活之处在于可以为每个实例指定不同的值:
Sample s1=new Sample(100);
Sample s2=new Sample(200);
Sample s3=new Sample(300);
public class Sample
{
public readonly int ReadOnlyValue;
public Sample(int value)
{
ReadOnlyValue=value;
}
}
总结
readonly 操作灵活。
const 效率高