1. ホーム
  2. c#

[解決済み] C# 3.0+におけるPropertyとFieldの相違点

2022-05-12 05:05:33

質問

と重複しているような気がするのですが、どうなんでしょうか? C#のフィールドとプロパティの違いは何ですか? と重複しているように見えますが、私の質問には若干の違いがあります(私の見解から)。

一度私はそれを知っている

  • 私は自分のクラスを "プロパティにのみ作用するテクニック" で使用せず
  • ゲッター/セッターにバリデーションコードを使用しないようにします。

プロパティを設定する際に何らかの制御を行うような違いは(スタイル/将来の開発のものを除いて)あるのでしょうか?

追加で何か違いがあるのでしょうか。

public string MyString { get; set; }

public string myString;

(最初のバージョンでは、C# 3.0以上が必要で、コンパイラがプライベートフィールドを作成することは承知しています)。

どのように解決するのですか?

カプセル化する。

2番目の例では変数を定義しただけですが、1番目の例では、変数の周りにゲッター/セッターがあります。そのため、後日その変数を検証したいと思った場合、それが非常に簡単になります。

さらに、Intellisense での表示も異なります :)

編集してください。 OPの更新された質問のための更新 - あなたがここで他の提案を無視したい場合、他の理由は、単に良いOO設計ではないことです。そして、もしあなたがそれを行うための非常に良い理由を持っていない場合。 常に はパブリック変数/フィールドよりもプロパティを選択します。