次の方法で共有


定数 (C# プログラミング ガイド)

定数は、コンパイル時に認識され、プログラムの有効期間中は変更されない不変の値です。 定数は const 修飾子を使用して宣言されます。 として宣言できるのは、C# constだけです。 String以外の参照型定数は、null 値でのみ初期化できます。 クラス、構造体、配列などのユーザー定義型を constすることはできません。 読み取り専用修飾子を使用して、実行時にコンストラクターなどで1回初期化され、その後変更できないクラス、構造体、または配列を作成します。

C# では、 const メソッド、プロパティ、またはイベントはサポートされていません。

列挙型を使用すると、整数組み込み型 ( intuintlongなど) の名前付き定数を定義できます。 詳細については、「enum」を参照してください。

定数は、宣言時に初期化する必要があります。 例えば次が挙げられます。

class Calendar1
{
    public const int Months = 12;
}

この例では、定数 Months は常に 12 であり、クラス自体でも変更できません。 実際、コンパイラは C# ソース コードで定数識別子 (たとえば、 Months) を検出すると、リテラル値を生成する中間言語 (IL) コードに直接置き換えます。 実行時に定数に関連付けられている変数アドレスがないため、 const フィールドは参照渡しできず、式の l 値として表示できません。

DLL などの他のコードで定義されている定数値を参照する場合は、注意が必要です。 DLL の新しいバージョンで定数の新しい値が定義されている場合、プログラムは新しいバージョンに対して再コンパイルされるまで、古いリテラル値を保持します。

同じ型の複数の定数を同時に宣言できます。次に例を示します。

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

定数を初期化するために使用される式は、循環参照を作成しない場合に別の定数を参照できます。 例えば次が挙げられます。

class Calendar3
{
    public const int Months = 12;
    public const int Weeks = 52;
    public const int Days = 365;

    public const double DaysPerWeek = (double) Days / (double) Weeks;
    public const double DaysPerMonth = (double) Days / (double) Months;
}

定数は、 publicprivateprotectedinternalprotected internal 、private protected としてマークできます。 これらのアクセス修飾子は、クラスのユーザーが定数にアクセスする方法を定義します。 詳細については、「 アクセス修飾子」を参照してください。

定数の値は型のすべてのインスタンスで同じであるため、定数は 静的 フィールドであるかのようにアクセスされます。 static キーワードを使用して宣言することはできません。 定数を定義するクラスにない式では、クラス名、ピリオド、定数の名前を使用して定数にアクセスする必要があります。 例えば次が挙げられます。

int birthstones = Calendar.Months;

C# 言語仕様

詳細については、C# 言語仕様のを参照してください。 言語仕様は、C# の構文と使用法の決定的なソースです。

こちらも参照ください