[C#] property と method

constやstatic readonlyで変数の値を防御することはできる。
他のclassに対して読み書きはさせるが、変数そのものを自由に触るのは防ぎたい、という方法として、GetYear, SetYearと言った読み書き目的のmethodを作ることがある。
これより簡単に同じ目的で使えるものがproperty。
privateなfieldにアクセスするためのpublicなpropertyを作る。

public int Year
{
set
{
if (value < 1)
throw new ArgumentOutOfRangeException("Year");
year = value;
}
get
{
return year;
}
}

getとsetはC#のキーワードではない。valueはpropertyに代入される値。
getだけ、setだけを持つpropertyも定義できる。getだけであればread-onlyになる。gettableと言うこともある。
propertyとmethodの使い分け
getにパラメタが必要な場合や、setに2個以上のパラメタを渡す場合にはmethodにする必要がある。
objectが名詞、propertyが形容詞、methodが動詞。
method名にget,setを組み合わせられるときにはpropertyにしたくなる。
propertyはこのまま
コンパイラはget_Year, set_Yearという2つのmethodを生成している。

広告
%d人のブロガーが「いいね」をつけました。