違いは何ですか
private string someText;
public string SomeText
{
get;
set;
}
と
public string SomeText
{
get;
set;
}
違いは何ですか
private string someText;
public string SomeText
{
get;
set;
}
と
public string SomeText
{
get;
set;
}
あなたのプライベートメンバーは使用されていません。
コンパイラはコンパイルします
public string SomeText
{
get;
set;
}
に相当する
private string _someText;
public string SomeText
{
get { return _someText; }
set { _someText = value; }
}
あなたの質問が 2 つの等しいものを比較していることに気付きましたか? (
public string SomeText
{
get;
set;
}
)
私はあなたの質問が本当に何であるかを考えています-違いは何ですか
private string someText;
public string SomeText
{
get
{
return someText;
}
set
{
someText = value;
}
}
と :
public string SomeText
{
get;
set;
}
答えは次のとおりです。2 番目の例では、バッキング フィールドはまだ存在しますが、作成されます。設定/取得に影響を与えることはありません。一方、最初の例では、他のチェックを入れて、有効な値が設定されていることを確認できます。
2番目は、次の構文シュガーです。
private string someText;
public string SomeText
{
get { return someText; }
set { someText = value; }
}
2 つ目は、舞台裏で変数の作成などを自動的に処理します。最初の例では、プライベート変数someText
は読み取られたり変更されたりすることはなく、何もしないクラスレベルの変数です。
最初のものを使用する理由は、ゲッター/セッターでより複雑なことをする必要がある場合です。たとえば、ゲッターで何かが初期化されているかどうかを確認したい場合があります。または、セッターで値を検証することもできます。