カテゴリ: C# 更新日: 2025/06/29

C#でconstとreadonlyの違いを理解しよう!定数の管理方法を解説

C#でconstとreadonlyの違いを理解しよう!定数の管理方法を解説
C#でconstとreadonlyの違いを理解しよう!定数の管理方法を解説

先生と生徒の会話形式で理解しよう

生徒

「C#で値が変わらない定数って、どうやって使うんですか?」

先生

「C#ではconstreadonlyという2つの方法で定数を扱えます。」

生徒

「それってどう違うんですか?同じ“変わらない値”なのでは?」

先生

「それでは、constreadonlyの違いについて、わかりやすく説明していきましょう!」

1. constとは?

1. constとは?
1. constとは?

const(コンスト)は、「コンスタント(constant)」の略で、プログラムが始まる前から決まっていて絶対に変わらない値を表すキーワードです。たとえば、「円周率」や「1日の時間(24時間)」など、一生変わらない値に使います。

constを使うと、その値はコンパイル時に固定され、プログラムの中で変更することができません。

書き方は以下のようになります:


const double Pi = 3.14;
Console.WriteLine("円周率は " + Pi);

円周率は 3.14

上記の例では、Piは円周率で、絶対に変わらない値なのでconstを使っています。

2. readonlyとは?

2. readonlyとは?
2. readonlyとは?

readonly(リードオンリー)は、「読み取り専用」という意味です。プログラムの実行中に一度だけ設定できて、その後は変更できない値を表します。

readonlyは、主にクラスのメンバー変数(フィールド)に使います。constと違い、実行時(ランタイム)に値を決められるので、より柔軟です。

以下のように使います:


class Circle
{
    public readonly double Radius;

    public Circle(double radius)
    {
        Radius = radius; // コンストラクタ内で初期化
    }

    public void ShowRadius()
    {
        Console.WriteLine("半径は " + Radius);
    }
}

半径は 10

上記の例では、Radiusはオブジェクトが作られるときに一度だけ設定され、その後は変更できません。

3. constとreadonlyの違いを比較しよう

3. constとreadonlyの違いを比較しよう
3. constとreadonlyの違いを比較しよう

constreadonlyはどちらも「一度決めたら変えられない値」ですが、以下のような違いがあります:

特徴 const readonly
値の設定タイミング コンパイル時(ソースコードに書いた時点) 実行時(コンストラクタ内など)
使える場所 メソッド内、クラス内 クラス内(フィールドとして)
初期化方法 定義時にすぐ必要 定義時またはコンストラクタで可能
変更可能か 不可能 一度だけ初期化可能
動的な値 使用できない 使用できる

たとえば、日時や設定ファイルから読み込んだ値など、実行してみないと分からない値にはreadonlyが適しています。

4. どちらを使えばいい?初心者向けの判断ポイント

4. どちらを使えばいい?初心者向けの判断ポイント
4. どちらを使えばいい?初心者向けの判断ポイント

定数を使うとき、以下のように選ぶとわかりやすいです:

  • 「絶対に変わらない値」const(例:円周率、消費税率など)
  • 「初期化だけしたら変えたくない値」readonly(例:ユーザーID、開始日時など)

プログラミング未経験の方でも、「料理のレシピ」に例えるとイメージしやすいです。

constは「レシピに書かれていて絶対変わらない分量(例:卵は2個)」、readonlyは「そのときに決めたけど途中で変えない分量(例:冷蔵庫にあるぶんの牛乳)」のようなものです。

5. 実際に使い分けるコード例

5. 実際に使い分けるコード例
5. 実際に使い分けるコード例

以下は、constreadonlyを両方使った例です。


class Config
{
    public const string AppName = "MyApp"; // いつも同じ
    public readonly string UserName;       // 実行時に決まる

    public Config(string userName)
    {
        UserName = userName;
    }

    public void Show()
    {
        Console.WriteLine("アプリ名:" + AppName);
        Console.WriteLine("ユーザー名:" + UserName);
    }
}

class Program
{
    static void Main()
    {
        Config config = new Config("たろう");
        config.Show();
    }
}

アプリ名:MyApp
ユーザー名:たろう

このように、固定の情報const実行時に一度だけ決まる情報readonlyを使いましょう。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
C#のfor文の基本!繰り返し処理をわかりやすく解説