重複の可能性:
C# のプロパティと変数の違いは何ですか
私は数週間前に C# を使い始めましたが、これは私を悩ませてきたものです。C# では、これらのいわゆる「魔法の」ゲッターとセッター (「シンタクティカル シュガー」とも呼ばれます) を使用できます。だから、私はこのようなことができます:
public int myInt { get; set; }
しかし、カプセル化の観点からは、これは無意味です。1 つは、データ メンバーがpublicであり、ドット演算子を使用して取得/設定できることです。ただし、これを行うと:
private int myInt { get; set; }
のように、まったくアクセスできませんmyInt is inaccessible due to protection level
。これは実際に何をしているのですか?これはデータのカプセル化を実現する簡単な方法だと思っていたので、これを行う必要はありません。
private int myInt;
public void setMyInt(int i) { myInt = i; }
public int getMyInt() { return myInt; }
しかし、そうではありません。私が知る限り、これらの変数を公開しているだけです。私は多分私は何かのようなことができるだろうと思った
public int myInt { get; }
したがって、クライアントはget
それを行うことができますが、そうではありませset
んが、パブリック アクセスは引き続き許可されます。それで、何が得られますか?
編集 特定のことをしようとしているわけではありません。これが実際にどのように機能するかを理解したいだけです。明確にするために:
変数を作成してpublic
も、特にドット演算子でアクセスできる場合、カプセル化は達成されません。変数の getter と setterprivate
を作成すると、変数を変更できますが、それが実際にどのように行われるかをより詳細に制御できます。