C#中Const常量和ReadOnly的区别总结

复习基础知识的时候,看到了readonly这里,被书里说的感觉忘了和const有什么区别了,索性今天就总结一下,以便于后续的学习。

一、常量Const:

1.声明时必须初始化值;

2.声明后值不能改变;

3.编译时决定;

4.通常是简单类型或由简单类型组成的表达式做初始化语句,也可以是Null引用,但是不能是某个对象的引用,因

 为对象引用是在运行时决定的;

5.更像“静态值”,因为他对类的每个实例都是可见的,即使不实例也可见,非常类似静态变量;

6.内存不会为Const变量分配空间,常量Const没有自己的存储位置,而是在编译时被编译器替换。

二、Readonly修饰符:

1.值被声明后就不能改变;

2.不仅可以初始化赋值的形式赋值,还可以在构造函数中赋值,如果是静态的字段,就必须在静态构造函数中完成;

3.他在内存中有存储位置;

4.可以是实例字段,也可以是静态字段;

三、常量Const与Readonly修饰符的异同:

1.Const和Readonly都是一旦值被设定后就不可以更改了,区别是Const必须在声明时就要赋值,而Readonly不仅可以在声明时赋值,还可以在构造函数中声明,也就是更灵活了,根据需要在不同构造函数中声明,只是一旦声明就不能改变。

2.Const是没有内存位置的,他在编译时由编译器替换,而Readonly是有内存位置的。

3.Const表现得更像一个静态值(只是内存中没有位置),而Readonly既可以是静态字段也可以是实例字段。

4.因为Const是在编译时决定的,而Readonly是在运行时决定的。正因为这个特性,所以const必须在声明时就要赋初始值并且还不能是非Null引用;也正是因为这个特性,Readonly的初始值赋值更为灵活,可以声明时直接定义也可以在在构造方法中定义。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦_恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值