C# 3.0 以降、プロパティからインスタンス変数を自動生成する新しい構文があります。
public string Foo { get; set; }
ただし、基になるバッキング フィールドにアクセスする方法はありません。したがって、同じインスタンス変数を宣言すると、「ゲッター」と「セッター」を呼び出すオーバーヘッドなしで同じ効果が得られるため、その意味がわかりません。
public string Foo;
次のようにプロパティを宣言します。
public string Foo { get; }
また
public string Foo { set; }
resp を書くことができないため、まったく役に立ちません。フィールドの内容を読み取ります。
なぜ C# でこのシンタックス シュガーを導入するためにこれだけの努力をしたのかについて、誰かが良い説明を持っていますか?
編集:人々は私がフィールドとプロパティを混同していると思っているようですので、私が言ったことを明確にさせてください.
自動生成フィールドを持つプロパティを使用している場合:
public string Foo { get; set; }
プロパティにアクセスするたびに「ゲッター」へのオーバーヘッド呼び出しがあり、get_Foo()
「ゲッター」で特に何もしていないため、マッシュアップがないため、それには意味がありません。このプロパティを作成する興味。フィールドの作成はまったく同じで、はるかに高速です (最適化に関して)。
ありがとう