成员常量
成员常量类似前一章所述的局部常量,只是它们被声明在类声明中而不是方法内,如下面的
示例:
与局部常量类似,用于初始化成员肯量的值在编译时必须是可计算的,而且通常是一个预定
义简单类型或由它们组成的表达式。
class MyClass
{Const int IntVal1=100; //没问题,因为IntVal1的值Const int IntVal2=2*IntVal1;//前面一行已设置
}
与局部常量类似,不能在成员常量声明以后给它赋值。
class MyClass
{Const int IntVal; //错误:必须初始化IntVal=100; //错误:不允许赋值
}
说明 与C和C++不同,在C#中没有全局常量。每个常量都必须声明在类型内。
常量与静态量
然而,成员常量比局部常量更有趣,因为它们表现得像静态值。它们对类的每个实例都是“可
见的",而且即使没有类的实例也可以使用。与真正的静态量不同,量没有自己的存储位置,
而是在编译时被编译器替换。这种方式类似于C和C++中的#define值。
例如,下面的代码声明了类x,带有常量字段PI。Main没有创建x的任何实例,但仍然可以
使用字段PI并打印它的值。图7-6阐明了这段代码。
class X
{public const doouble PI=3.1416;
}class Program
{static void Main(){Console.WriteLine($"pi={X.PI}");//使用常量字段PI}
}
static const double PI=3.14;//错误:不能将常量声明为static