readonly和const

readonly作用类似于声明一个字段为const,一旦值被设定就不能改变。

 1.const字段只能在字段的声明语句中初始化,不能在声明后给它赋值。而readonly字段可以在字段声明语句中赋值,也可以在类的任何构造函数中赋值(如果是static字段,必须在static构造函数中完成初始化)。

 2.const没有自己的存储位置,而是在编译时被编译器替换(const成员表现很像一个静态量,但不能声明为static的原因)。所以它的值必须在编译期决定。而readonly字段的值可以在运行期决定。它在内存中有位置。所以允许在不同的环境或者不同的构造函数中设置不同的值。

 3.const总是像静态的,它们对于每个实例都是可见的,而且即使没有类的实例也可以使用。
readyonly可以是静态字段也可以是实例字段。

Demo:
class Shape
      {
          //初始化
          readonly double PI = 3.1416;
          //未初始化
          readonly int NumberOfSides;
  
          public Shape(double side1, double side2)
          {
              //表示一个矩形
              NumberOfSides = 4;
              //......some code
          }
  
          public Shape(double side1, double side2, double side3)
          {
              //表示一个三角形
              NumberOfSides = 3;
              //......some code
          }
      }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值