0
Public Class FooBar
{
    private int _foo;

    public int Foo { 
        get { return _foo; }
        set { _foo = value; }
    }

    public void DoStuff()
    {
        _foo++; // Do this?
        Foo++; // Or this?
    }
}

クラス内のフィールドまたはプロパティ (存在する場合) にアクセスするためのより受け入れられた方法はありますか? 私はいつもフィールドにアクセスする習慣を持っていましたが、INotifyPropertyChanged がたくさんある WPF をやっていたので、プロパティにアクセスして通知を変更する必要があることに気付きました。そのため、クラス全体でフィールドアクセスとプロパティアクセスの両方が混在していますが、コンパイラの観点からは、スタイルと読みやすさは問題ではありませんが、...ぎこちなく感じます。

4

2 に答える 2

2

これの多くは、個人のスタイルに帰着します。ここに 100% の正解や不正解はありません。

私の好みは、いくつかの理由で毎回プロパティを通過することです

  • プロパティへのアクセスを中断し、値のすべての取得/設定を確認できるため、デバッグが容易になります。フィールドでは不可能
  • 一貫性: 自動プロパティなど、バッキング フィールドに直接移動できない場合があります。毎回プロパティを調べると、同じ値にアクセスする同じコードが表示されます。
  • パフォーマンス: 単純なプロパティはJIT によってインライン化される 可能性が高いため、パフォーマンスの問題は通常、ミュート ポイントです。
于 2009-08-01T15:28:00.233 に答える
2

プロパティへのアクセスが意味をなさない場合もあります (たとえば、プロパティ自体を実装している場合)。これらのケースはさておき、私はデフォルトでプロパティ スタイルを使用します (そうしない特別な理由がない限り)。プロパティを介してフィールドにアクセスすると、すべての変更が単一のコード パスに送られ、実装の変更とデバッグが容易になり、エラーが発生しにくくなります。

于 2009-08-01T15:07:17.913 に答える