1

重複の可能性:
C# のフィールドとプロパティの違いは何ですか

これの違いは何ですか:

class Name {
  public int x;
}

この:

class Name {
  int cx;
  public int x {
    get { return cx; }
    set { cx = value; }
  }
}

それは同じことですか、それともいくつかの違いがありますか?ありがとうございました

4

1 に答える 1

4

それらは違う。

前者はxフィールド、後者xはプロパティです。プロパティはコードで「フィールドと同じようにアクセス」されますが、これは C# の優れた点です。定義が異なると、実際には互換性のない型が異なります1

自動プロパティを使用すると、後者と同等になります (ただし、書くのははるかに簡単です):

class Name {
    public int x { get; set; }
}

関連/重複した質問に対するBrian Rasmussenによるこの回答が気に入っています。

フィールドとプロパティは同じように見えますが、[同じ]ではありません。プロパティはメソッドであるため、プロパティでサポートされていないものや、プロパティでは発生する可能性があるがフィールドでは発生しないものがあります。

答えは、使用法と観察可能なセマンティクスをカバーするいくつかの重要な違いをリストすることに続きます。


1フィールドからプロパティへの変更 (またはその逆) は型破壊の変更であり、事前にバインドされた (たとえば、静的に型指定された) コードを新しい型に対して再コンパイルする必要があります。

于 2012-09-12T21:19:05.910 に答える