プロパティとは、クラス外部から見るとメンバー変数のように振る舞い、 クラス内部から見るとメソッドのように振る舞う機能です。
そのため、実装状態(private修飾子のまま)を変更することなく、外部クラスへの参照・変更を行える機能であるため、扱いを覚えておくと非常に便利です。
プロパティ
// 生成回数
private int generateCount;
// generateCount 変数用のプロパティ
public int GenerateCount
{
set {
generateCount = value;
Debug.Log("生成数 / クリア目標数 : " + generateCount + " / " + clearCount);
if (generateCount >= clearCount) {
// ゴール地点を生成
GenerateGoal();
// ゲーム終了
GameUp();
}
}
get {
return generateCount;
}
}
今回は、private で宣言している generateCount 変数をプロパティを利用することによって、外部クラスから参照出来るようにしています。
private 修飾子にて宣言フィールドで宣言した変数については、外部のクラスからは参照・変更を行うことが出来ません。
このとき、どうしても参照を行いたい場合には、変数の修飾子を public 修飾子に変更して対応するのではなく
プロパティの持つ get キーワードを利用して、戻り値を利用して private 修飾子の変数を外部クラスに参照させることが出来ます。
この設計により、public ではない変数を外部クラスで利用できるようにします。
外部からプロパティを呼び出して戻り値を参照する処理のことをゲッター(getter)と呼びます。
同様に、private 修飾子の値を外部クラスより変更したい場合には、同じプロパティをを仲介する手法を使って書き換える処理を実装出来ます。
こちらの処理はセッター(setter)と呼びます。
get、set キーワードはどちらか片方だけでも記述できます。また今回のように、プロパティ内部に条件式を用意して、その結果に合わせて処理を変更する記述も出来ます。
実際の利用方法については次の手順で紹介します。
参考サイト
未確認飛行 C 様
プロパティ
https://ufcpp.net/study/csharp/oo_property.html
FEnetインフラ様 テックブログ
C#のプロパティを使いこなそう!さまざまな実装方法を紹介
https://www.fenet.jp/infla/column/technology/c%E3%...