0

重複の可能性:
C#のフィールドとプロパティの違いは何ですか?

クラス/サブクラス階層に保護された変数を作成する必要があります。ただし、変数の代わりに単純なget/setプロパティを使用する他の実装を見続けています。

getterまたはsetterで実行する必要のあるコードはなく、スコープは常に保護されているため、違いはありますか?

protected int foo1;
// vs
protected int foo2{ get; set; }

前者の利点は、値で直接初期化できることですが、他に知っておく必要のあることや制限があるのではないかと思います。

注:ゲッター/セッターにコードがある場合はありません。これらは、内部で計算されたメトリックの単なるプレースホルダーであり、パフォーマンスは重要です(ミリ秒レベルでも)。これにより、ゲッター/セッターを完全にバイパスするため、最初の方が優れていると思います。

4

2 に答える 2

4

違いは、後でゲッター/セッターメソッドにロジックを追加する必要がある場合でも、呼び出し元のコードが壊れないことです。

于 2012-12-28T15:35:40.887 に答える
0

読み取り専用でない限り、保護されたメンバーにはゲッターとセッターを使用します。読み取り専用の場合は、protected readonly問題なく動作します。正直なところ、誰かがリフレクションを使用してプロパティを反復処理していない限り、それは実際には重要ではありません。いつでも一方を他方に切り替えることができ、正常にコンパイルされます。

実際、考えてみると、私は通常、メソッドを使用します。これは、通常、継承したいのは、明示的な基本状態ではなく、基本動作であるためです。

保護されたプロパティがたくさんあると、カプセル化が多少壊れるので、正直なところコードの臭いがします。

于 2012-12-28T15:40:42.103 に答える