自動プロパティを使用すると、コンパイラは画面の背後に独自のバッキングフィールドを作成することがわかります。しかし、私が学ぶために読んだ多くのプログラムでは、人々が明示的に書くことが分かりますバッキングフィールドがある場合とない場合の自動プロパティ - プリファレンス?
private int _backingField;
public int Property { get { return _backingField; } }
上記と以下の違いは何ですか?
public int Property { get; private set; }
は、私はあなたが実際にゲッターやセッターでの副作用を持っているときに明らかにプロパティを使用することを理解し、それは多くの場合ではありません。また、構造体の場合は、バッキングフィールドを明示的に使用する必要があることを理解しています。プロパティを使用してメンバーにアクセスすることはできません。
私が見つけた唯一の違いは、値を呼び出す方法が定義されているクラスの中で違うということです。単純な設定ですか、それともそのプロパティを介して値を呼び出すためのものか直接フィールドにアクセスすることによって? 簡単な表記法ですか?
XNAのVector2を例として使用して、私が言うところなら public Vector2 TheVector {get;セット; } 私は電話できません TheVector.X = 10; 代わりに、実際のフィールドを使用する必要があります。値渡し/参照渡しの何か。 (C#の値/参照を渡すことを明確にするための読書資料がありますか?) – Taelia
また、私の2つの例の間に実際の違いがない場合、なぜ多くの人々が明示的に目的)? – Taelia
@Taelia:そうですね、それは可変構造のケースです - 私はこれを避けるのが普通です。これは、プロパティーが値のコピーを戻すためです。そして、私は他の人が何をするのか理由を述べようとはしません。 –