自動実装されたプロパティは実際にコンパイル時にプライベートフィールドを生成しますか?
コンパイルしてプログラムを実行した後:
class Person
{
private string surname;
public string Name { get; set; }
public string Surname
{
get { return surname;}
set
{
surname = value;
}
}
}
一つは見ることができ、リンクされた画像から、示さない「名前」プライベートフィールドがありません。 Visual Studioだけでは認識できないのですか、それとも何か他のことが起こっていますか?
私は、あなたの2つのC#の例では、もう一方は単純に構文的な砂糖です。または "コンパイル時にバッキングフィールドが作成されます。"
キャッチは何ですか?
ちょうどそれについて考えてみてください。どのように彼らはできませんでしたか?それ以外の場合は、セッターが実行されたときにデータはどこに格納されますか?しかし、あなたはILコードを見て、必要ならそれを見ることができます。リフレクターを使用してください。 http://www.red-gate.com/products/dotnet-development/reflector/ –
また、プライベートフィールドは 'name'と呼ばれません。有効なC#識別子ではない "unpronouncable"という名前が付けられます。これにより、別の目的のために識別子 'name'を使用するあなたが書いたかもしれないコードと衝突しないことが保証されます。 –
私はhttps://tryroslyn.azurewebsites.netを提案する –