const, readonly和static的区别

他们本质的差别在于,const的值是在编译时确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还能通过静态构造函数来赋值。

 

(一)Const:

1)常量是在编译时定义的,不能在运行时改变;

     不能在代码的任何地方改变常量,要不然编译出错。

2)只能在声明中赋值,且只能是常数或常数表达式;

     出错的例子:

     const double PI;
     PI=3.14159;

3)类或构造函数在运行时通过new来初始化,所以不能设常量为类或构造函数。

     出错的例子:

     const int [] birds = new int[] {1, 2, 3};

4)不允许在常数声明中使用 static 修饰符。隐式地为静态的。

     出错的例子:

     static const double PI=3.14159;

 

(二)readonly

1)readonly是在运行时定义的,不同的构造函数会有不同的值。

2)readonly可以在声明时初始化,或者在构造函数中初始化。

3)可以用new来初始化。

4)不是隐式static, 所以可以用static 修饰。

 

(三)static

1)使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员。

2)不能通过实例引用静态成员,只可以通过类型名称引用它。

3)每个静态字段只有一个副本,不管有多少个类的实例,它们共享一个副本。

4)不可以使用 this 引用静态方法或属性访问器。 因为没有this指针。

5)static类中只能包含static成员,不能包含任何实例数据或方法。 

 

 

学习网址:

http://en.csharp-online.net/const%2C_static_and_readonly
http://blog.csdn.net/Active_Life/archive/2009/03/02/3948587.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值