C#中const与static readonly的区别

    在C#中const与static readonly很像,在程序中都为只读,并且一旦初始化就不可更改。两者在大多数情况下可以混用,两者的一些区别列举如下:

    对于const:

  1. 在编译期间解析的常量
  2. 必须在声明时就初始化
  3. 既可以用来修饰类中的成员,也可以用来修饰函数体内的局部变量

    对于static readonly:

  1. 在运行期间解析的常量
  2. 既可以在声明时初始化,也可以在构造器中初始化
  3. 只可以用于修饰类中的成员

    const被称为静态常量(compile-time constants),而static readonly被称为动态常量(runtime constants),他们有不同的特性,错误的使用可能损失效率,还可能造成错误。相比之下,静态常量在速度上会稍快一些,但是灵活性却比动态常量差很多。两者的区别如下:

     静态常量:

  1.      无内存消耗
  2.     只能初始化为很少的简单类型,不能new,必须在声明时同时赋值
  3.     在编译时替换

    动态常量:

  1. 因为要保存常量,所以有内存消耗
  2. 可以初始化为任意类型,可以在构造函数中赋值
  3. 相当于类中的数据成员

                                                                                                                                 参考资料:欧立奇《.net程序员面试宝典》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值