constant与steady_const用法详解

(2) 2024-06-29 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
constant与steady_const用法详解,希望能够帮助你!!!。

前言:

        这个问题我们在平常开发工作中可能不太注意,但在面试官那里可能被经常提及!深入理解他们对我们的开发有很大的指导性.提升程序的性能以及减少出错率!

讲义:

        当我们理解const与readonly的区别时,可能牵涉出C#语言的两种常量类型,静态常量与动态常量.

        静态常量是编译器在编译期间就对其进行解析的常量!所以我们在声明静态常量的时候就要用常量表达式对其进行初始化.

        动态常量是编译器在运行期间对其进行解析的常量,编译器编译期间将其声明为只读常量,此常量可以延迟到构造函数中进行初始化.

       const就是静态常量,而readonly就是动态常量.

       下面看一个实例:

       

class Program { class Test { public const int constTest = 2; public readonly int readonlyTest; //也可以在声明时初始化 //public readonly int readonlyTest=3; public static readonly int staticReadonlyTest; //同readonlyTest public Test() { readonlyTest = 3; //延迟到构造函数中初始化 } static Test() { staticReadonlyTest = 4; //延迟到构造函数中初始化 //注意:static变量在static构造函数中初始化 } } static void Main(string[] args) { Console.WriteLine("constTest is {0},staticReadonlyTest is {1}", Test.constTest, Test.staticReadonlyTest); Console.ReadLine(); } }

       
下面我们再列出他们(const,readonly以及static readonly)的相同点和不同点

       相同点:

  1.                 const与readonly都是只读的.
  2.                 const默认是static的,而且在编译期间已经解析完成.所以const与static readonly 只能由类来访问,而readonly由实例来访问.

       不同点

  1.                 const既可以修饰类中的成员,又可以修饰函数体中的成员.而readonly只能修改类中的成员.
  2.                 const(静态常量)只能声明为简单的数据类型,如int,浮点型,枚举,布尔,字符串型.而readonly(动态常量)可以修饰一下对象类型,如Datetime类型.

        注意:

  1.                const默认是静态的,不能再static const!
  2.                static readonly常量,如果要在构造函数中初始化其值,必须在静态无参构造函数中初始化.

总结:

       const是静态常量,readonly是动态常量.const高效,readonly灵活!但实际开发中我们经常用static readonly 来代替const, 以平衡const在灵活性上的不足.

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复