• c#:readonly与const的区别


    readonly与const的区别:
    1.初始化:const  字段只能在该字段的声明中初始化。 readonly  字段可以在声明或构造函数中初始化。
    2.值: const 字段是编译时常量(const本身是static,不能与static一起使用),readonly 字段可用于编译时常量,也可用于运行时常量。const修饰的字段其值不能被改变,只有一个值;readonly 字段的值(包括运行时常量的值和编译时常量的值)可以在所使用的构造函数中被改变,即readonly 字段可能具有不同的值。
    class Class1    //实例成员应用readonly
    {      
        //readonly在声明时初始化
        public readonly double x = 58.5;//此时x与y没区别
        public const double y = 58.5;
     
        public readonly double a = int.Parse("58.5");
        //public const double b = int.Parse("58.5");//报错:b的表达式必须是常量
     
        public readonly int c = (int)new Random().Next(10,20);
        //public const int d = (int)new Random().Next(10, 20);//报错:d的表达式必须是常量
     
        //readonly在构造器中初始化
        public Class1()
        {
            x = 12;
            //y = 12;//报错:赋值号左边必须是变量、属性或索引器,也就是说const值不能再次赋值
            c = (int)new Random().Next(10, 20);
        }
    }
    class Class2   //静态字段使用readonly
    {
        //readonly修饰静态字段时可以在声明时初始化
        public static readonly double x = 58.5;//此时x与y没区别
        public const double y = 58.5;
     
        public static readonly double a = int.Parse("58.5");
        //public const double b = int.Parse("58.5");//报错:b的表达式必须是常量
     
        public static readonly int c = (int)new Random().Next(10,20);
        //public const int d = (int)new Random().Next(10, 20);//报错:d的表达式必须是常量
     
        //readonly修饰静态字段时也可以在静态构造器中初始化
        static Class2()
        {
            x = 12;//readonly的编译时常数值可以在静态构造器中再次被改变
            //y = 12;//报错
            c = (int)new Random().Next(10, 20);//readonly的运行时常数值可以在静态构造器中再次被改变
        }
    }
  • 相关阅读:
    30天敏捷结果(17):找出高效时间,并利用它来处理重要事情
    需求:需求获取技术之 观察
    30天敏捷结果(13):如何对事情付诸行动
    2010年11月blog汇总:敏捷练习、需求和建模
    MDSF:Eclipse MDD Day学习
    需求:结合TOGAF做好需求获取工作
    MDSF:架构工具简要功能说明
    信息系统开发平台OpenExpressApp:【OpenTest】 之 框架实现说明
    吃:第二次去吃香草香草
    30天敏捷生活(911):调整30天的节奏
  • 原文地址:https://www.cnblogs.com/fantasy2121/p/6281765.html
Copyright © 2020-2023  润新知