0

違いは何ですか

private string someText;

public string SomeText
{
    get;
    set;
}

public string SomeText
{
    get;
    set;
}
4

4 に答える 4

3

あなたのプライベートメンバーは使用されていません。

コンパイラはコンパイルします

public string SomeText
{
     get;
     set;
}

に相当する

private string _someText;

public string SomeText
{
   get { return _someText; }
   set { _someText = value; }
}
于 2013-10-16T00:42:11.900 に答える
2

あなたの質問が 2 つの等しいものを比較していることに気付きましたか? (

public string SomeText
{
    get;
    set;
}

)

私はあなたの質問が本当に何であるかを考えています-違いは何ですか

private string someText;

public string SomeText
{
    get
     {
       return someText;
     }

    set 
     {
      someText = value;
     }
}

と :

public string SomeText
{
    get;
    set;
}

答えは次のとおりです。2 番目の例では、バッキング フィールドはまだ存在しますが、作成されます。設定/取得に影響を与えることはありません。一方、最初の例では、他のチェックを入れて、有効な値が設定されていることを確認できます。

于 2013-10-16T00:46:09.490 に答える
1

2番目は、次の構文シュガーです。

private string someText;

public string SomeText
{
    get { return someText; }
    set { someText = value; }
}

2 つ目は、舞台裏で変数の作成などを自動的に処理します。最初の例では、プライベート変数someTextは読み取られたり変更されたりすることはなく、何もしないクラスレベルの変数です。

最初のものを使用する理由は、ゲッター/セッターでより複雑なことをする必要がある場合です。たとえば、ゲッターで何かが初期化されているかどうかを確認したい場合があります。または、セッターで値を検証することもできます。

于 2013-10-16T00:43:53.110 に答える