1.对于常量,C#里有两个不同的版本:
编译时常量--效率相比更高些,但可维护性不好,保留的目的是为了性能。const关键字申明
public const int _Millennium = 2000;
运行时常量--效率稍低些,可维护性好。readonlyc关键字声明,也叫只读变量。
public static readonly int _ThisYear = 2007
2.两者的区别;
编译时常量只能是基本类型,枚举或者是字符串。编译时常量会被目标代码中的值直接取代
运行时常量可以是任何类型的数据。运行时常量动态取值(动态指运行时确定值)。
注意:运行时常量可以在定义变量时设定值或在构造函数中初始化,其他地方不可以再修改。
举例:private const DateTime _classCreation = new DateTime(2000,1,1,0,0,0); //ERROR 值编译时不确定
private readonly DateTime _classCreation = new DateTime(2000,1,1,0,0,0);//PASS
另外:运行时常量可以是一个类的实例成员,也可以是一个类型的静态成员,而编译时常量只能是静态成员
3.对可维护性的解释
例子:一个类库中定义一个编译时常量,类库被客户端引用,当类库中常量值需更改时,客户端需要重新编译,否则取出的
值有问题,而对于运行时常量不存在这样的问题。
4. const应该用于定义一个值且该值不能在不同的版本发布时发生改变的常量