readonly和const

来源:互联网 发布:mac照片如何导入iphone 编辑:程序博客网 时间:2024/06/06 07:52

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          }      }



原创粉丝点击