const キーワード
const
キーワードを使用して、定数フィールドまたはローカル定数を宣言します。 定数フィールドとローカルは変数ではなく、変更できません。 定数には、数値、ブール値、文字列、または null 参照を指定できます。 いつでも変更される予定の情報を表す定数を作成しないでください。 たとえば、定数フィールドを使用して、サービスの価格、製品バージョン番号、または会社のブランド名を格納しないでください。 これらの値は時間の経過と共に変化する可能性があり、コンパイラは定数を伝達するため、ライブラリでコンパイルされた他のコードを再コンパイルして変更を確認する必要があります。 readonly キーワードも参照してください。 例えば:
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}";
Remarks
定数宣言の型は、宣言によって導入されるメンバーの型を指定します。 ローカル定数または定数フィールドの初期化子は、ターゲット型に暗黙的に変換できる定数式である必要があります。
定数式は、コンパイル時に完全に評価できる式です。 したがって、参照型の定数に使用できる値は、文字列と 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()
{
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# 言語仕様の次のセクションを参照してください。
関連項目
- C# のキーワード
- readonly
.NET