私は長い間プログラミングをしているので、言語の変更についていくのが難しい場合があります...
.net v2 の後でこのようなプロパティを設定しても本当に大丈夫ですか
public string LocaleName
{
get;
set;
}
内部フィールドは必要ありませんか? 最近、コンパイラがこれを処理しているようですか?
私は長い間プログラミングをしているので、言語の変更についていくのが難しい場合があります...
.net v2 の後でこのようなプロパティを設定しても本当に大丈夫ですか
public string LocaleName
{
get;
set;
}
内部フィールドは必要ありませんか? 最近、コンパイラがこれを処理しているようですか?
はい、これは C# 3.0 の新機能です
ご存知のように、次のようなこともできます。
public string MyString
{
get;
private set;
}
これにより、パブリック アクセサーとプライベート セッターが提供されます。
値が正しい方法で設定されているかどうかを確認する必要がない限り、問題ありません。
C# Specificationをご覧ください。
はい、これらは「自動実装プロパティ」と呼ばれます。Compiler は、プロパティのバッキング フィールドを作成します。
「自動実装プロパティ」は「C# コンパイラ トリック」であるため、C# 3.0 コンパイラを使用してコードをコンパイルする限り、それらをコードで使用し、.NET Framework 2.0 をターゲットにすることができます。
はい、それらは自動プロパティと呼ばれ、バックグラウンドでバッキング フィールドを生成します。
はい。C# 3.0 以降では、プロパティ アクセサーに追加のロジックが必要ない場合、自動実装されたプロパティによってプロパティ宣言がより簡潔になります。また、クライアント コードでオブジェクトを作成できるようにします。次の例に示すようにプロパティを宣言すると、コンパイラは、プロパティの get および set アクセサーを介してのみアクセスできるプライベートな匿名バッキング フィールドを作成します。