C#中的常量的使用
时间:2010-12-22 来源:撞破南墙
常量被当做静态变量。常量的定义导致元数据(metadata)的创建。当我们的代码中使用到常量的时候,有IL寻找metadata中的常量,因为常量被
硬编码,所以不需要在运行时分配内存。同时也意味着他没有很好的跨程序集的能力,比如说对于一个已经发布出去的一个程序的DLL,你不能通过更新DLL来
改变DLL中的常量。所以常量是比较适合放 比如π的值,光速等不会变化的东西。如果你想放只读的,又可能会改的可以使用readonly关键字
一句话总结:常量就是在编译器就被硬编码到程序中的一种数据类型.
对于readonly是字段的修饰符
需要注意的是: readonly 修饰的变量,其变量的地址是不能更改的,但其地址所指向的值却可以改变。
public sealed class AType {
// InvalidChars must always refer to the same array object
public static readonly Char[] InvalidChars = new Char[] { 'A', 'B', 'C' };
}
public sealed class AnotherType {
public static void M() {
// 可以编译通过
AType.InvalidChars[0] = 'X';
AType.InvalidChars[1] = 'Y';
AType.InvalidChars[2] = 'Z';
// 不被编译通过
AType.InvalidChars = new Char[] { 'X', 'Y', 'Z' };
}
}