6

もしあれば、違いは何ですか?

public int x;

public int x { get; set; }

?

4

3 に答える 3

5

最初のものはフィールドと呼ばれます。2 つ目はプロパティで、この場合は自動実装されたプロパティです。

プロパティはフィールドのように機能しますが、getter および setter 関数を使用して値を取得および設定します。上記のプロパティを別の方法で記述すると、次のようになります。

private int _x;
public int X
{
    get
    {
        return _x;
    }
    set
    {
        _x = value;
    }
}

この場合の変数はバッキング フィールド_xと呼ばれます。自動実装されたプロパティでは、バッキング フィールドにアクセスしたり、getter/setter のコードをカスタマイズしたりすることはできませんが、その必要がなければ、より短く簡潔になります。

C# の原則として、ほとんどの場合、パブリック メンバーはフィールドではなくプロパティとして公開する必要があります。

于 2013-11-09T20:22:48.753 に答える
0

1 つ目は、どこからでもアクセスできるパブリック変数です。

2枚目は公有地

詳細については、プロパティのチュートリアルを確認してください。

プロパティには多くの用途があります。変更を許可する前にデータを検証できます。データベースなどの他のソースからデータが実際に取得されるクラスでデータを透過的に公開できます。イベントの発生や他のフィールドの値の変更など、データが変更されたときにアクションを実行できます。

于 2013-11-09T20:22:12.883 に答える
0

この 2 つの違いは、プロパティが単に変数を取得/設定する以上のことを実行できることです。
この例を見てください:

private int _x;
public int x 
{ 
    get 
    {
      //do something
      return _x;
    } 
    set
    {
      if(_x != value)
      PropertyChanged("x");
      _X = value;
    }
}

プロパティを設定するPropertyChanged()と、値が変更されたことを何か ( ) で通知します。フィールドだけでやるのは大変だろう

于 2013-11-09T20:26:21.847 に答える