zoukankan      html  css  js  c++  java
  • C#常量————const和readonly

    1.定义:
        相同:2者都是来定义常量、只读的。
       不相同:const为编译时常量,即在编译时便用该常量的值代替常量变量。
                   readonly为运行时常量,即在运行时返回一个运行时常量的变量引用。

    2.实例分析:
      (1)public class Limitation
      {
        public static readonly int startValue =5;
        public const int endValue=10;
      }
      注意:对于readonly修饰的运行是常量,只能在初始化时赋值,或者是构造函数中赋值。而不能在其他地方赋值。
      (2)public static readonly int A=2;
         public const int B=3;
         表达式为:int C=A+B;
             当编译后则会变成下面的形式等价:int C=A+3;

    3.区别:

      (1)声明以及初始化
        readonly----声明为类字段,在声明的同时进行初始化或者在构造函数中进行初始化,初始化完成后便无法更改。
        const----除了可以声明类字段,也可以声明为方法中的局部变量。默认为静态类型(无需用static修饰),但必须在声明的同时完成初始化。
      (2)数据类型支持
        由于const常量在编译时将被替换为字面量,使得其取值类型受到了一定限制。const常量只能被赋予数字(整数、浮点数)、字符串以及枚举类型。
      (3)可维护性
        readonly以引用方式进行工作,某个常量更新后,所有引用该常量的地方均能得到更新后的值。
        const的情况要稍稍复杂些,特别是跨程序集调用。
    4.适用场景 :

      在下面两种情况下:
        a.取值永久不变(比如圆周率、一天包含的小时数、地球的半径等)
        b.对程序性能要求非常苛刻
        可以使用const常量,除此之外的其他情况都应该优先采用readonly常量。

  • 相关阅读:
    colormap
    tensorflow4
    tensorflow3
    attention 机制
    tensorflow2
    Android 再谈handler
    Android表格布局之设置边框
    Android AsyncTask异步加载WebAPI
    Android JPush极光推送应用
    Android规划周期任务
  • 原文地址:https://www.cnblogs.com/minfan/p/6054212.html
Copyright © 2011-2022 走看看