const 關鍵詞
您可以使用 const
關鍵詞來宣告常數欄位或區域常數。 常數位段和局部變數不是變數,而且無法修改。 常數可以是數位、布爾值、字串或 Null 參考。 請勿建立常數來代表您預期隨時變更的資訊。 例如,請勿使用常數位段來儲存服務的價格、產品版本號碼或公司的品牌名稱。 這些值可能會隨著時間而變更,而且因為編譯程式會傳播常數,因此使用連結庫編譯的其他程式代碼必須重新編譯,才能查看變更。 另請參閱 唯讀 關鍵詞。 例如:
const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";
插補字串 可以是常數,如果使用的所有運算式也是常數位符串。 這項功能可以改善建置常數位符串的程式代碼:
const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";
備註
常數宣告的類型會指定宣告所導入的成員類型。 本地常數或常數欄位的初始化表達式必須是可以隱含轉換為目標類型的常數表達式。
常數表達式是可在編譯時期完整評估的表達式。 因此,參考型別常數的唯一可能值為字串和 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;
注意
只讀 關鍵詞與 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()
{
var mC = new SampleClass(11, 22);
Console.WriteLine($"x = {mC.x}, y = {mC.y}");
Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {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 = {C}");
}
}
// Output: My local constant = 707
C# 語言規格
如需詳細資訊,請參閱 C# 語言規格的下列各節: