C#中动态常量(readonly)与静态常量(const)的区别

版权声明: https://blog.csdn.net/hemingyang97/article/details/82025800

C#中动态常量(readonly)与静态常量(const)的区别

 

C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量)

ConstReadonly的异同:

相同点:

 const和readonly的值一旦初始化则都不再可以改写;

不同点:

  1. const定义时必须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值
  2. const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;

 

  1. const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值,内存无消耗);readonly则是运行期动态解析的常量(内存因保存常量,所以有消耗)
  2. const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员.
  3. const 对于引用类型的常数,可能的值只能是 string 和 null 
       readonly 可以是任何类型
  4. const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
  5. const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足,

猜你喜欢

转载自blog.csdn.net/hemingyang97/article/details/82025800
今日推荐