C# const和readonly的区别

    //很多初学者分不清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个建议》笔记抄录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值