成員常量
成員常量類似前一章所述的局部常量,只是它們被聲明在類聲明中而不是方法內,如下面的
示例:
與局部常量類似,用于初始化成員肯量的值在編譯時必須是可計算的,而且通常是一個預定
義簡單類型或由它們組成的表達式。
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