//很多初学者分不清readonly和const的使用场合。它们的本质区别如下:
//1.const是一个编译期常量,readonly是一个运行时变量
//2.const只能修饰基元类型、枚举类型或字符串类型,而readonly没有限制
//关于第一个区别,const是编译期常量,所以它天然就是static的,不能再手动的给const增加一个static修饰符
//const int ConstValue = 100;
//Console.WriteLine(ConstValue);和Console.WriteLine(100);的效果是完全一致的,所以const高效
//readonly变量是运行时变量,其赋值行为发生在运行时。第一次赋值后将不可改变。
//1.对于值类型变量,值本身不可改变;
//2.对于引用类型变量,引用本身(相当于指针)不可改变;但是可以实例多个对象,每个对象的值可以不一样
class Program
{
static void Main(string[] args)
{
Sample sample = new Sample(200);
//sample.ReadOnlyValue = 300; //无法对只读的字段赋值(构造函数或变量初始值指定项中除外)
Sample2 sample2 = new Sample2(new Student() { Age = 10 });
//sample2.ReadOnlyValue = new Student() { Age = 20 }; //无法对只读的字段赋值(构造函数或变量初始值指定项中除外)
}
class Sample
{
public readonly int ReadOnlyValue = 100; //(构造函数或变量初始值指定项中除外),初始化的值可以改变,但赋值之后就不行;
public Sample(int value)
{
ReadOnlyValue = value;
}
}
class Sample2
{
public readonly Student ReadOnlyValue;
public Sample2(Student value)
{
ReadOnlyValue = value;
}
}
}
读《改善C#程序的157个建议》笔记抄录。
C# const和readonly的区别
最新推荐文章于 2024-07-17 19:25:41 发布