005.5. 定数を作ろう

過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです. 画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.

変数では自由に出し入れができましたが、常に決まった数字だけを返す変数を作りたい時はconst修飾しをつけるとできます。

定数とは

単純に言えば、出すことはできるけど、入れることができない変数です。いわゆる読み取り専用というものですね。
書き方はこんな感じ
d27
「const修飾子」と難しい言葉が出てますが、ただ単純に「constと書く」ってだけです。
アクセス修飾子についてはこちらを参照

書き方

クラス/メソッドの中に定義できます。宣言と同時に初期化する必要があります。

class Program
{
    public const int CstValue = 123;
    static void Main()
    {
        Console.WriteLine(CstValue);
        // 出力:
        // 123
    }
}

また、メソッド内で使う場合はこのように使います。

class Program
{
    static void Main()
    {
                const int CstValue = 123;
        Console.WriteLine(CstValue);
        // 出力:
        // 123
    }
}

先ほども言いましたように、初期化の時にしか値を入れることができません。
そのため、メソッド内で定数を使うのではなく、基本的にクラスの方に定義してください。また、定数はクラスの中の先頭部分にまとめて定義することをオススメします。
また、定数は常に静的です。なので、一つ目のコードで、外から定数を呼び出す際はstaticをつけていなくてもProgram.CstValueと呼び出せます。
定数の使い道は「プログラムで細かい調整をするために設定できるようにする」とかです。
例えば、常に10回のループをするプログラムを書きたいならこんな風に書くとバグ取りしやすくなります。

const int LoopCount = 10;
static void Main()
{
    for (int i = 0; i < LoopCount; i++)
        Console.WriteLine(i);
}

このような感じで書きます。ある時突然20回にしたくなった時、定数で回数を定義すると、回数を変更しやすくなります。
もしコードが長くなると、ループの命令がどこにいったかわからなくなりますからね。

まとめ

定数とは「読み取り専用の」変数
クラスやメソッド内に定義できる
常に静的、staticをつける必要はない