【ClassPractice12】自動実装プロパティを使ってみよう

2026年8月31日

広告

前回はこう書きました。

private int Hp;

public int CurrentHp
{
    get { return Hp; }
    set
    {
        if (value < 0)
        {
            Hp = 0;
        }
        else if (value > MaxHp)
        {
            Hp = MaxHp;
        }
        else
        {
            Hp = value;
        }
    }
}

少し長いですね。

実は C# には、

自動で裏の変数を用意してくれる書き方

があります。

それが 自動実装プロパティ です。

このStepの位置づけ:今回は自動実装プロパティの書き方を知るため、いったん値の制御を外します。安全なHP設計としての完成形ではありません。次のStepで、外からの変更を制限する方法へ進みます。


① プロジェクトを追加する

  1. ExtraPractice.sln を開く
  2. 右クリック → 「追加」→「新しいプロジェクト」
  3. 「コンソール アプリ」
  4. プロジェクト名
ClassPractice12
  1. 作成

② Playerクラスを書く

今回はシンプルにします。

namespace ClassPractice12
{
    public class Player
    {
        public string Name { get; set; }

        public int CurrentHp { get; set; }

        public Player(string name, int hp)
        {
            Name = name;
            CurrentHp = hp;
        }
    }
}

何が変わったのか?

public int CurrentHp { get; set; }

これだけで、

  • 取得できる
  • 設定できる
  • 裏で変数も作られる

ようになります。


③ Program.cs

Player p1 = new Player("勇者", 100);

Console.WriteLine(p1.CurrentHp);

p1.CurrentHp = 50;

Console.WriteLine(p1.CurrentHp);

実行結果

100
50

注意点

この書き方は便利ですが、

今は

制御はしていません

つまり、

p1.CurrentHp = -999;

も可能です。


ではなぜ使うの?

自動実装プロパティは、

✔ シンプルなデータ用

✔ 制御が不要なとき

✔ 書きやすさ重視

に使います。


今日のポイント

✔ 自動実装プロパティは短く書ける

✔ 裏に変数が自動で作られる

✔ 制御は書いていない


まとめ

これまでの進化:

  • private フィールド
  • 手書き get / set
  • 制御付きプロパティ
  • 自動実装プロパティ

ここまで来ると、

C# のプロパティの全体像が見えています。



確認課題

CurrentHpへ-999を代入できてしまうことを確認し、制御付きプロパティとの違いを説明してみましょう。

シリーズの次のページ

訪問数 55 回, 今日の訪問数 1回

広告