【C#】アクセス修飾子とは

アクセス修飾子とは

フィールド(データ)やメソッド(処理)を保護するために使用するのが、アクセス修飾子と呼ばれるものです。

フィールドおよびメソッドへのアクセスの制限を指定するために使用します。

 

C#のアクセス修飾子

C#のアクセス修飾子は5つあります。

 

public(パブリック)

publicはどこからでもアクセス可能です。

他のクラス、他のプロジェクト先からもアクセス可能となります。
便利ではあるものの、変更や修正があった際に広範囲に渡って影響範囲を調査していく必要があります。
そのため、まずはinternalを使用することを前提としましょう。

そして、internalでカバーできない時にpublicを使用します。

 

internal(インターナル)

同一のアセンブリ(DLL)内でアクセス可能となります。

同一アセンブリとは、同一のexeファイルやDLLファイルのことです。
Visual Studioのソリューション内であれば、同一のプロジェクトということになります。

internalであれば、他のプロジェクトからはアクセスされません。
そのため、プログラムを変更や修正する際に、他のプロジェクトへの影響を考える必要がなくなります。

 

protected(プロテクティッド)

同一クラスか、その派生(サブ)クラスでのみアクセス可能となります。

サブクラスとは、継承しているクラスのことです。
サブクラスは、親子関係で例えると「子」になります。

親子関係の「親」のみで使用する際は、privateを使用します。
「子」にも使用させる際には、protectedを使用します。

この場合は、別のプロジェクトであっても、継承関係であればprotectedのアクセスは可能です。

 

protected internal(プロテクティッド インターナル)

protectedかつinternalという意味になります。

protected internalを使ったプログラムを書くことは、滅多にないので覚える必要はないでしょう。

 

private(プライベート)

同じクラス内でのみアクセス可能となります。

外部からアクセスされることがないため、自分のクラスでのみ値を参照したり、変更したい場合に使用します。

 

ソースコード

namespace Sample
{
    class Sample1
    {
        // public
        public void PublicMethod()
        {
        }

        // internal
        internal void InternalMethod()
        {
        }

        // protected
        protected void ProtectedMethod()
        {
        }

        // protected internal
        protected internal void ProtectedInternalMethod()
        {
        }

        // private
        private void PrivateMethod()
        {
        }
    }
}

補足

クラス名のアクセス修飾子を省略することができます。
省略した際は、internalなクラスとして扱われます。

 

おすすめ書籍

■C#を学習し始めた方向け
やさしいC 第3版 (「やさしい」シリーズ)

1週間でCの基礎が学べる本

確かな力が身につくC「超」入門 第2版 (Informatics&IDEA)

■C#をある程度学習した方向け
基礎からしっかり学ぶCの教科書 改訂新版 (マイクロソフト関連書)

独習C 新版

Effective C 6.0/7.0