C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 >
定数の宣言
2021/2/28
一般的な定数の宣言
const int minFileCount = 2;
const int bigNumber = 120_000_000; //数字の間の _ は無視されるので桁区切りに使用できます。(C# 7.0以上)
const int maxFileCount = minFileCount + 8; //定数の値に定数を指定できます。
const string companyName = "Visual Basic 中学校";
const double surface = 5 * 5 * Math.PI;
メモ:定数で使用できる型はプリミティブ型(int, string, longなどの基本的な型)か列挙型のみです。
複数の定数の宣言
const int x = 1, y = 2, z = 3;
メモ:見やすさを優先して、1行ずつ定数を宣言する方が良い場合がほとんどです。
特殊な名前の定数
変数名の先頭に @ を付けると予約語と同じ名前の定数を宣言できます。
const int @int = 123;
const string @void = "ABC";
メモ:このような定数名はそもそも使用すべきではありません。
アクセスレベル(public, privateなど)を指定
クラスレベルの定数はpublic, protected, private などアクセスレベルを指定するキーワードを使って宣言できます。これらを省略してconstのみで宣言した場合は private と同じ効果です。
public const string DefaultSku = "Z-001";
private const bool defaultCache = false;
参考:できそうでできないこと
- クラスや構造体・配列などの定数は作成できません。
- つまり、定数の宣言時に new を使用することはできません。
- 定数の値を設定するときにメソッドやプロパティは使用できません。
- 定数の宣言では型推論を使用できません。
参考:定数にできないときの代替手段
上記のような制限で困る場合、static readonly で宣言できる読み取り専用の共有変数がクラスレベルの定数に代わりになりえます。
たとえば、日付型(DateTime構造体)の定数のように振る舞う読み取り専用変数を定義できます。
public static readonly int[] numbers = new int[] {1, 1, 2, 3, 5, 8, 13};
public static readonly DateTime baseDate = new DateTime(2021, 2, 14);
public static readonly System.Drawing.Point basePoint = new System.Drawing.Point(10, 20);
参考
const キーワード - C# リファレンス | Microsoft Docs