C#のさまざまな側面のデフォルトの可視性のリファレンスを見つけようとしています。クラスのタイプ、フィールド、メソッド、列挙型など
誰かがこれらのリストをデフォルトの可視性(つまり、接頭辞付き修飾子なし)とともに提供できますか?
C#のさまざまな側面のデフォルトの可視性のリファレンスを見つけようとしています。クラスのタイプ、フィールド、メソッド、列挙型など
誰かがこれらのリストをデフォルトの可視性(つまり、接頭辞付き修飾子なし)とともに提供できますか?
回答:
あなたが探しているすべての情報はこことここにあります(ありがとうRed Copsey):
最初のリンクから:
クラスと構造体の名前空間内で直接宣言されている(つまり、他のクラスまたは構造体の中にネストされていないこと)、パブリックまたは内部のいずれかになります。アクセス修飾子が指定されていない場合、デフォルトは内部です。
...
ネストされたクラスと構造体を含む、クラスメンバーと構造体メンバーのアクセスレベルは、デフォルトではプライベートです。
...
インターフェースのデフォルトは内部アクセスです。
...
デリゲートはクラスと構造体のように動作します。デフォルトでは、名前空間内で直接宣言された場合は内部アクセスがあり、ネストされた場合はプライベートアクセスがあります。
2番目のリンクから:
他の型にネストされていない最上位の型は、内部またはパブリックのアクセシビリティのみを持つことができます。これらのタイプのデフォルトのアクセシビリティは内部です。
ネストされた型の場合:
デフォルトメンバーのアクセシビリティのメンバー ---------- ---------------------------- 列挙型公開 クラスプライベート インターフェース公開 構造プライベート
Public
です。Enum
メンバーもPublic
。可能性が高いので、あなたのケースで明示的なスコープを使用することで混乱が少なくなるでしょう。それは、ある時点でc#開発者によって翻訳または読み取られるからです。vb.netでのコード生成では、残念ながらこれは行われません。
MSDNから:
他のタイプにネストされていない最上位タイプは、internal
またはpublic
アクセシビリティのみを持つことができます。これらのタイプのデフォルトのアクセシビリティはinternal
です。
出典:アクセシビリティレベル(C#リファレンス)(12月6日目、2017年)
デフォルトでは、クラスのアクセス修飾子はinternal
です。つまり、同じアセンブリ内でクラスにアクセスできます。ただし、他のアセンブリからクラスにアクセスする場合は、クラスを公開する必要があります。
[assembly:InternalsVisibleTo("Friend1b")]
デフォルトはprivate
です。ネストされていない限り、クラスはinternal
です。
enum members are private by default, so to use them outside the enum we should declare them as public
ます。本があなたの言うことと矛盾する理由を説明していただけますか?ありがとう。