![]() ![]() ![]() |
![]() |
|||
![]() |
|||
今回は、アクセス修飾子の省略に関して解説します。 C#ではClass、Interface、Enum、Struct、Delegateなど、さまざまな型がありますが、 これらを宣言するときにアクセス修飾子を省略すると、以下に挙げるようになります。 Namespaceの元や、Namespaceなしで、ネストしていない場合はinternalになる この場合、Foo.BarとIFooBarは、暗黙的にinternalになります。 Enum、Struct、Delegateなどでも同様です。 namespace Foo { class Bar {} } interface IFooBar {} メンバに関してはprivateになる このFooBar.fooとFoobar.Ifooはクラスのメンバにあたるため、暗黙的にprivateになります。 namespace Foo { class Bar { class foo {} } } class Foobar { interface Ifoo {} } 当然、 class Foo { int field; void method(); } というクラスでは、field、methodは両方ともprivateになります。 ネストしたクラスからの外側のメンバへのアクセス この場合、コメントされているほうを実行すると、コメントで記述したようなエラーが発生します(リストA)。 このエラーの通り、直接外側のクラスのメンバを操作することはできません。 ただし、コメントされていないほうのコンストラクタのように、外側のクラスのインスタンス経由では privateなメンバに対してアクセスすることが可能です。 なお、クラス、インターフェイス、メンバなどのアクセス修飾子に関しては、 VS.NETのクラスビューやオブジェクトブラウザで確認することができるので、 複雑なケースは確認しながらコーディングをしたほうが安全でしょう。 リストA:ネストしたクラスからの外側のメンバへのアクセス
|
|||
前へ | ページトップへ | 次へ![]() |