【ClassPractice11】set を追加して制御してみよう
前回はこうでした。
public int CurrentHp
{
get { return Hp; }
}
読むことはできました。
でも、書き換えはできません。
今回は、
書き換えはできるけれど、安全にする
方法を学びます。
① プロジェクトを追加する
- ExtraPractice.sln を開く
- 右クリック → 「追加」→「新しいプロジェクト」
- 「コンソール アプリ」
- プロジェクト名
ClassPractice11
- 作成
② Playerクラスを書く
namespace ClassPractice11
{
public class Player
{
public string Name;
private int Hp;
private int MaxHp;
public Player(string name, int maxHp)
{
Name = name;
MaxHp = maxHp;
Hp = maxHp;
}
public int CurrentHp
{
get { return Hp; }
set
{
if (value < 0)
{
Hp = 0;
}
else if (value > MaxHp)
{
Hp = MaxHp;
}
else
{
Hp = value;
}
}
}
}
}
ここが新しい部分
set
{
...
}
value という特別な名前が出てきました。
これは、
外から渡された値
です。
③ Program.cs
Player p1 = new Player("勇者", 100);
Console.WriteLine(p1.CurrentHp);
p1.CurrentHp = -50;
Console.WriteLine(p1.CurrentHp);
p1.CurrentHp = 500;
Console.WriteLine(p1.CurrentHp);
実行結果
100
0
100
何が起きている?
外から
p1.CurrentHp = -50;
としても、
set の中で制御されます。
つまり、
書き換えは許可する
でもルールは守らせる
設計になりました。
今日のポイント
✔ get は「取得」
✔ set は「設定」
✔ value は外から来た値
✔ set の中で制御できる
まとめ
private → 守る
get → 見せる
set → 制御しながら変更させる
ここまで来ると、
C#のオブジェクト設計の基礎はほぼ完成です。
訪問数 3 回, 今日の訪問数 3回




ディスカッション
コメント一覧
まだ、コメントがありません