zoukankan      html  css  js  c++  java
  • 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的运行时常数值可以在静态构造器中再次被改变
        }
    }
  • 相关阅读:
    周末总结
    大数据开源框架技术汇总
    oracle迁移mysql总结
    梯度下降
    BFC的概念
    元素类型
    window10安装tensorflow
    学习使用git
    设计模式中的关系
    拟合圆
  • 原文地址:https://www.cnblogs.com/fantasy2121/p/6281765.html
Copyright © 2011-2022 走看看