readonly 与 const

  1. readonly
    1. MSDN定义:readonly 关键字是可以在字段上使用的修饰符。当字段声明包括 readonly 修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。
    2. readonly修饰的字段只能在两个地方对其赋值,第一个是初始化字段的时候,第二个是构造函数中。
       1 class Age
       2     {
       3         //第一个可赋值的地方
       4         //private readonly int _year = 20;
       5         readonly int _year;
       6 
       7         Age(int year)
       8         {
       9             //第二个可赋值的地方
      10             _year = year;
      11         }
      12         void ChangeYear()
      13         {
      14             //除了上面两除,其他方式都不能改变它的值
      15             //编译不能通过
      16             _year = 1967;
      17         }
      18     }
    3. readonly修饰数组时,使数组长度不可改变,数组中每个元素的值是可以改变的。
  2. const
    1. MSDN定义:const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
    2. const 修饰的字段只能在初始化字段的地方为其赋值。
    3. const定义的常量在程序运行过程中只有一份拷贝,省内存。
       1     class Age
       2     {
       3         //唯一可赋值的地方
       4         const int _year = 20;
       5 
       6         Age(int year)
       7         {
       8             //编译不能通过
       9             _year = year;
      10         }
      11         void ChangeYear()
      12         {
      13             //编译不能通过
      14             _year = 1967;
      15         }
      16     }
  3. 区别:
    1. const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。
    2. 由于readonly字段可在构造函数中赋值,在不同的实例中可以有不同的值。而const字段相当于常量,在不同的实例中具有相同的值。
    3. 另外,const 字段是编译时常量,而 readonly 字段(配合static修饰符)可用于运行时常量
posted @ 2014-07-20 17:40  David Huang  阅读(218)  评论(0编辑  收藏  举报