const (C# 參考)
更新:2007 年 11 月
const 關鍵字是用來修改欄位或區域變數的宣告。它所指定之欄位或區域變數的值是常數,也就是無法修改。例如:
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";
備註
常數宣告的型別指定由宣告引入的成員型別。常數運算式必須產生目標型別或可以隱含轉換成目標型別之型別的值。
常數運算式是可以在編譯時期完整評估的運算式。因此,參考型別唯一常數值可能是 string 或 null。
常數宣告可以宣告多個常數,例如:
public const double x = 1.0, y = 2.0, z = 3.0;
static 修飾詞不能用於常數宣告。
常數可以參與常數運算式,如下所示:
public const int c1 = 5;
public const int c2 = c1 + 100;
注意事項: |
---|
readonly 關鍵字不同於 const 關鍵字。const 欄位僅可以在該欄位宣告時初始化。readonly 欄位則是可以在宣告或是在建構函式中初始化。因此,readonly 欄位會根據使用的建構函式而產生不同值。另外,雖然 const 欄位是編譯時期常數,而 readonly 欄位則可當做執行階段常數使用,如這一行所示:public static readonly uint l1 = (uint)DateTime.Now.Ticks; |
範例
public class ConstTest
{
class SampleClass
{
public int x;
public int y;
public const int c1 = 5;
public const int c2 = c1 + 5;
public SampleClass(int p1, int p2)
{
x = p1;
y = p2;
}
}
static void Main()
{
SampleClass mC = new SampleClass(11, 22);
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
Console.WriteLine("c1 = {0}, c2 = {1}",
SampleClass.c1, SampleClass.c2 );
}
}
/* Output
x = 11, y = 22
c1 = 5, c2 = 10
*/
此範例示範如何將常數當做區域變數。
public class SealedTest
{
static void Main()
{
const int c = 707;
Console.WriteLine("My local constant = {0}", c);
}
}
// Output: My local constant = 707
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
6.1.6 隱含常數運算式轉換
8.5.2 區域常數宣告