const、readonly与sealed

const与readonly

在C#中,二者都都将变量声明为只读 ,并且在变量初始化后就不可以改写。

不同点主要涉及到以下两个常量类型:

  • 静态常量(compile-time constants)
    指编译器在编译时候会对常量进行解析,并将常量的值替换成初始化的那个值。
  • 动态常量(runtime constants)
    动态常量的值则是在运行的那一刻才获得的,编译器编译期间将其标识为只读常量,而不用常量的值代替,这样动态常量不必在声明的时候就初始化,而可以延迟到构造函数中初始化。

对于const,其修饰的常量类型为静态常量
对于readonly,其修饰的常量类型为动态常量

  • const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化;
  • const修饰的常量在编译期间就被解析,即常量值被替换成初始化的值;readonly常量只能声明在类中;
  • const常量既可以声明在类中,也可以在函数体中;但是static readonly常量只能声明在类中。

因此,对于二者,相同点在于:

  • const和readonly都是只读的。
  • const默认是static的,而且在编译期间已经解析完成。因此const和static readonly只能有类访问,而readonly通过实例访问。

不同点在于:

  • const既可以修饰类中的成员,又可以修饰函数体中的成员;而readonly只能修饰类中的成员。
  • const(静态常量)只能声明为简单的数据类型,如int、浮点型、枚举型、布尔型、字符串型;而readonly(动态常量)则可以修饰对象类型。

需要注意的是:

  • const默认是静态的,不能用所谓的“static const”、
  • static readonly常量,如果要在构造函数中初始化其值,也必须在静态无参构造函数中初始化。

小结:

  • const是静态常量,readonly是动态常量。
  • const高效,readonly灵活。
  • 实际使用中,常常用static readonly来代替const,以此来平衡const在灵活性上的不足。

sealed

sealed,即密封类和密封方法。
在C#中允许把类和方法声明为sealed

  • 对于类,则表明不能继承该类。
  • 对于方法,则表示不能再次重写该方法。

在方法中使用sealed,只能是在已经被重写的方法中定义sealed,表示这个方法不可以再被重写。

密封类和密封方法的作用,是防止重写某些类导致代码的混乱,或者一些出于商业上的原因。

const 与readonly区别

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值