2012-04-28 8 views
15

プライベートフィールドまたはプロパティを使用することをお勧めしますか?Containing Class内で、PropertyまたはFieldを使用しますか?

たとえば、このフィールドとプロパティのペアがある場合は、クラスの外にのクラスを使用する必要があります。どのようなコード内部のクラスについては?それはプライベートフィールドを使用すべきか、それともプロパティを通過すべきか?

private string _foo; 

protected string Foo 
{ 
    get { return this._foo; } 
} 

private void SomeMethod() 
{ 
    string dummyVariable = "snuh" + this._foo; // So, this... 
    string dummyVariable = "snuh" + this.Foo; // ... or this? 
} 

ここでプロパティを使用する利点の1つは、ゲッターにロジックがある場合でも実行されることです。私はここに従うベストプラクティスの方針があるかどうかを知りたいと思っています。

+1

私の意見では、一貫性がある限り、あなたの財産が特別なことをしない限り、問題はありませんが、他の人が何を言わなければならないのは不思議です。 – Tung

+0

[プライベートフィールドxプロパティのローカル使用に関するベストプラクティス]の複製可能性(http://stackoverflow.com/questions/833047/best-practice-on-local-use-of-private-field-x-property) – Matt

+0

命名法注記:用語「変数」を間違って使用しています。この場合、「フィールド」を意味します。 –

答えて

8

Auto-Implemented propertiesを使用している場合は、には、生成されたフィールドへのアクセス権がないため、このプロパティを使用する必要があります。

プロパティが単純ではなく、追加の作業(検証、イベントの発生など)が必要な場合は、アクセスとロジックを集中化するためにプロパティを呼び出す必要があります。あなたは、私が求めるだろう(無ロジックとバッキングフィールドを持つ単純なプロパティを意味する)他のプロパティを持っている場合は

なぜ彼らはあなたが与えるれている例では

...上記の一つではありません、それは作りますほとんど違いはありません - これらの使い方と一致することが重要であり、実際には個人の美学やコーディングスタイルにまでこだわっています。

+1

デフォルト以外の初期値(C#)を持つプロパティまたはプライベートセッター(VB.NET)を持つプロパティは、単純な非自動プロパティの2つの使用例が思い浮かびます。 – Heinzi

+0

@Heinzi - 真実、そしてこの例に関する私の答えの一部は、それらにも適用されます... – Oded

関連する問題