ホーム>source

次のコードを検討してください。

<前>ウィズウィズ

私はこれがカプセル化を壊すかどうかを意味するのか尋ねたいと思います。

編集:同じタイプであっても、他のオブジェクトのプライベート値を読み取ることができないはずだと思うので。これが発生する可能性があるため:

<前>ウィズウィズ public class Counter { private int _value; // public int Value => _value; // commented for asking purposes public void Increment() { _value++; } public void Decrement() { _value--; } public void CopyOtherCounter(Counter other) { _value = other._value; // the compiler didn't show any error here // why it does not break encapsulation? } }
あなたの答え
  • 解決した方法 # 1

    カプセル化(コンピュータプログラミング)

    ウィズウィズ

    定義により、まだカプセル化されており、タイプ内にあり、非常に特定のアクセシビリティドメインを持っています!

    簡単に言えば、定義したタイプ内のプライベートフィールドにアクセスできます、これにはネストも含まれますタイプ/クラス (タイプへの参照を扱っている場合でも)そのように(そして仕様で定義されているように)、許可されます。

    これに関する特定のドキュメントを取得するには、ここで見つけることができるC#仕様を詳細に調べる必要があります。

    ここに重要な部分があります

    ウィズウィズ

    さらに

    ウィズウィズ

    ですから直感に反する アクセスできるようにプライベートメンバー 間に方法 (あなただけにアクセスできる場合参照)、 まだカプセル化 本質的に(あなたは定義に反対するかもしれませんが)、そしてアクセス可能です

    In object-oriented programming (OOP), encapsulation refers to the bundling of data with the methods that operate on that data, or the restricting of direct access to some of an object's components

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ ios - ガイドライン241:性能:ハードウェアの互換性