C#にかぎらずオブジェクト指向言語のクラス内の変数を外部から読み出したり、変数に値を設定する場合は、get/setメソッドを使うのが基本。しかし、変数ごとにいちいちget/setメソッドを設定するのは煩雑になってしまう。
そこでC#では「プロパティ」というしくみがつくられた。プロパティは、クラスの外から見ればget/setメソッドのように見え、クラス内部から見れば普通の変数として扱える。
次のサンプルコードでは、int Month
にgetアクセサとsetアクセサが設定されている。getアクセサはクラス外から値を読むときに実行され、setアクセサは値を設定するときに実行される。
setは、プロパティと同じ方のvalue
という暗黙のパラメータを介して値を設定する。
public class Date { private int month = 7; // Backing store public int Month { get { return month; } set { if ((value > 0) && (value < 13)) { month = value; } } } }
プロパティを使うメリットは、メソッドを増やさずにメソッドと同等のことができること。たとえば、値が読まれた時にデバッグ出力したり、イベントを発行する、値が設定される際に範囲チェックを行なう(上の例)、などだ。