アクセス修飾子 (access modifiers) / アクセシビリティ修飾子 (accessibility modifiers)

アクセス可能な範囲
  アセンブリ内 アセンブリ外
修飾子 クラス内 サブクラス その他 サブクラス その他
private × × × ×
protected × ×
internal × ×
protected internal ×
public

アクセス修飾子の既定値

アクセス修飾子を省略した場合、その対象によって

  • クラスと構造体 (のアクセス修飾子) … internal
  • クラスと構造体のメンバー (メンバのアクセス修飾子) … private
  • 列挙型とインターフェイスのメンバー … public

のように、暗黙的にアクセス修飾子が適用されます。

トラブル対処法

CS0051

アクセシビリティに一貫性がありません。パラメーターの型 'type' のアクセシビリティはメソッド 'method' よりも低く設定されています。Compiler Error CS0051 | Microsoft Docs

methodのアクセス修飾子が、それで用いている型typeのアクセス修飾子よりも制限が緩いのが原因です。たとえばtypeがinternalで定義されているのに、methodを定義している型がpublicである場合などです。

CS0507

'function1': 'access' の継承メンバー 'function2' をオーバーライドするときに、アクセス修飾子を変更できません。Compiler Error CS0507 | Microsoft Docs

override修飾子でオーバーライドせずに、new修飾子で隠蔽するようにします。c# - How to increase the access modifier of a property - Stack Overflow

または基本クラスと同一のアクセス修飾子とします。

参考

参考書

MSDN (Microsoft Developer Network) から検索