自動プロパティを実装するとどうなりますか
public string Foobar { get; set; }
次に、対応する変数をコーディングします
private string foobar = string.Empty;
自動プロパティはこの変数を使用しますか、それともコンパイラは追加の変数を生成しますか?
自動プロパティを実装するとどうなりますか
public string Foobar { get; set; }
次に、対応する変数をコーディングします
private string foobar = string.Empty;
自動プロパティはこの変数を使用しますか、それともコンパイラは追加の変数を生成しますか?
いいえ、自動プロパティは変数を使用しません。foobarと呼ばれる他のフィールドとまったく同じです。
名前のsmilarityは、コンパイラにまったく影響を与えません。
コンパイラはバックグラウンドでフィールドを生成しますが、自動プロパティのバッキングフィールドにアクセスすることはできません。
この投稿は、IL(Intermediate Langauge、Assembly of C#)レベルでの動作を示しています。
コンパイラはその変数を使用しません、いいえ。変数を使用するには、次のように記述する必要があります
private string foobar = string.Empty;
public string Foobar
{
get { return foobar; }
set { foobar = value; }
}
Resharperを使用している場合は、これを行うためのテンプレートを設定できます。Resharperは、未使用のプライベート変数からゲッターも生成します。
なぜだろう?バッキングフィールドは、このように名前を付ける必要はありません(多くの場合、名前を付けないでください)。