プロパティで分からない所
プロパティで一部、想定された用途がいまいち分からない所があります。
プロパティの想定された使い方がイマイチ分かりません。
とりあえず
private int _field;
public int Field {
get { return _field; }
set { if( value >= 0 ) _field = value; }
}
で設定できる値を自然数のみに絞れるように、if文や演算子を使って、入力や出力に何らかの操作を持たせられるところまでは分かっています。これの有用性などは分かります。
ただ、
// 1
private int _field;
public int Field {
get { return _field; }
set { _field = value; }
}
や
// 2
public int Field { get; set; }
と
// 3
public int Field;
の違いが分かりません。
2が自動プロパティで、1のコードをコンパイラが自動生成してくれる事は知ってます。
上記の1,2と3で
スコープ範囲って変わらないと思うのですが、色んな説明を読んでると、アクセスを制限出来るみたいな説明がなされるのを見かけます。
もしかしてスコープ範囲以外の目的なのでしょうか?
*スマホから質問しているのでコードミスとかあればすみません
(追記)
つまり何が聞きたいかというと、{ get; }
で読み取り専用にしたいみたいな意図がないなら{ get; set; }
を付ける意味あるの?って事です。