もしあれば、違いは何ですか?
public int x;
と
public int x { get; set; }
?
最初のものはフィールドと呼ばれます。2 つ目はプロパティで、この場合は自動実装されたプロパティです。
プロパティはフィールドのように機能しますが、getter および setter 関数を使用して値を取得および設定します。上記のプロパティを別の方法で記述すると、次のようになります。
private int _x;
public int X
{
get
{
return _x;
}
set
{
_x = value;
}
}
この場合の変数はバッキング フィールド_x
と呼ばれます。自動実装されたプロパティでは、バッキング フィールドにアクセスしたり、getter/setter のコードをカスタマイズしたりすることはできませんが、その必要がなければ、より短く簡潔になります。
C# の原則として、ほとんどの場合、パブリック メンバーはフィールドではなくプロパティとして公開する必要があります。
1 つ目は、どこからでもアクセスできるパブリック変数です。
2枚目は公有地
詳細については、プロパティのチュートリアルを確認してください。
プロパティには多くの用途があります。変更を許可する前にデータを検証できます。データベースなどの他のソースからデータが実際に取得されるクラスでデータを透過的に公開できます。イベントの発生や他のフィールドの値の変更など、データが変更されたときにアクションを実行できます。
この 2 つの違いは、プロパティが単に変数を取得/設定する以上のことを実行できることです。
この例を見てください:
private int _x;
public int x
{
get
{
//do something
return _x;
}
set
{
if(_x != value)
PropertyChanged("x");
_X = value;
}
}
プロパティを設定するPropertyChanged()
と、値が変更されたことを何か ( ) で通知します。フィールドだけでやるのは大変だろう