Const和readonly的比较

开门见山的说,他们是不同类型的常量

一,const是编译时常量,意思就是编译的时候const声明的对象值就已经确定了,如果这以后改了值不编译的话值还是原来的值

    说的有点拗口,看代码

       const int B = 6;//编译,

       然后你改成

       const int B = 8;//不编译

   这时候其实B=6; 

  这个就是const编译时常量的意思

  很显然,readonly是运行时常量

  static readonly int A = 9; 

  只要在运行之前改了A的值,A的值就是你最后一次改的值 

 二,const必须在声明的时候赋值

   const  int F;

  这样的代码是无法通过编译的

  const int f=8;//赋初始值才可以

  readonly不一定要声明时候赋值,当然可以在声明的同事初始化,或者在构造函数时候初始化 

    readonly int G; 

    readonly int G=6;

  以上两种声明写法都可以

 三,数据类型支持

  const支持的数据类型较少,只支持数字,字符串,枚举类型

   const   DateTime E = DateTime.Now;

  上面这行代码无法通过编译

  readonly DateTime E = DateTime.Now;

  上面这种代码没问题,readonly支持任何类型

四,性能比较

  const略占优势,从编译时还是运行时就可以知道 

  其实,也是微乎其微的优势

  一般取值永久不变的时候,例如圆周率可以声明位 const double  h = 3.14; 

 

最后,我的小建议,如果实在搞不清楚二者的区别,我建议你就用readonly吧! 

 

   

 

posted @ 2010-06-25 10:35  艾伦  阅读(256)  评论(0编辑  收藏  举报