小鱼儿-fly

c#,ASP.NET 一条艰辛而漫长的道路...千里之行,始于足下!

导航

C# const与readonly

Posted on 2010-10-27 14:27  小鱼儿-fly  阅读(189)  评论(0编辑  收藏  举报

1. const

const的概念就是一个包含不能修改的值的变量。常数表达式是在编译时可被完全计算的表达式。

const 默认是 static 类型,因此属于类级别,它的特点是在编译的时候用const修饰的变量的值就已经是明确知道的定值,而不能是一个计算表达式。而且,只能在声明的时候给定它的值,以后都不可以改。

2.readonly

允许把一个字段设置成常量,但可以执行一些运算,可以确定它的初始值。因为 readonly 是在计算时执行的,当然它可以用某些变量初始化。
readonly 是实例成员,所以不同的实例可以有不同的常量值,这使readonly更灵活。
readonly 不是static类型,属于实例级别,因此不能通过 类名.变量名 来用。只能通过 实例.变量名 来用。但是同const不同的是,它属于运行时的常量,也就是说,readonly可以在运行时才确定它的值,一旦确定以后也不可以更改(构造函数外)。需要注意的是:readonly的值可以在声明的时候指定,也可以在构造函数内部进行指定,其他地方均不可修改


3.readonly 关键字与 const 关键字不同。

  • const 字段只能在该字段的声明中初始化;
  • readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。
  • const 字段是编译时常数,而 readonly 字段可用于运行时常数。
  • const 默认就是静态的,而 readonly 如果设置成静态的就必须显示声明。
  • const 对于引用类型的常数,可能的值只能是 string 和 null。readonly可以是任何类型