重複の可能性:
C# のフィールドとプロパティの違いは何ですか
これの違いは何ですか:
class Name {
public int x;
}
この:
class Name {
int cx;
public int x {
get { return cx; }
set { cx = value; }
}
}
それは同じことですか、それともいくつかの違いがありますか?ありがとうございました
重複の可能性:
C# のフィールドとプロパティの違いは何ですか
これの違いは何ですか:
class Name {
public int x;
}
この:
class Name {
int cx;
public int x {
get { return cx; }
set { cx = value; }
}
}
それは同じことですか、それともいくつかの違いがありますか?ありがとうございました
それらは違う。
前者はx
フィールド、後者x
はプロパティです。プロパティはコードで「フィールドと同じようにアクセス」されますが、これは C# の優れた点です。定義が異なると、実際には互換性のない型が異なります1。
自動プロパティを使用すると、後者と同等になります (ただし、書くのははるかに簡単です):
class Name {
public int x { get; set; }
}
関連/重複した質問に対するBrian Rasmussenによるこの回答が気に入っています。
フィールドとプロパティは同じように見えますが、[同じ]ではありません。プロパティはメソッドであるため、プロパティでサポートされていないものや、プロパティでは発生する可能性があるがフィールドでは発生しないものがあります。
答えは、使用法と観察可能なセマンティクスをカバーするいくつかの重要な違いをリストすることに続きます。
1フィールドからプロパティへの変更 (またはその逆) は型破壊の変更であり、事前にバインドされた (たとえば、静的に型指定された) コードを新しい型に対して再コンパイルする必要があります。