C#のアクセス修飾子をわかりやすく解説!初心者でも理解できる完全ガイド

C#のクラスやメソッドにアクセス修飾子を付けることで、プログラムの構造を整理し、安全性を高めることができます。本記事では、C#における主要なアクセス修飾子をわかりやすく解説し、それぞれの使い方と役割を具体例を交えて説明します。


sponsor link

アクセス修飾子とは?

アクセス修飾子とは、クラス、メソッド、プロパティなどのメンバーに対して「どこからアクセスできるか」を制御するためのキーワードです。適切に使用することで、データの隠蔽コードの保守性向上が期待できます。

C#で利用できる主なアクセス修飾子は以下の5つです。

  • public
  • private
  • protected
  • internal
  • protected internal

 クラスや構造体のメンバーについてはこの5種類全てを選べる一方で、トップ レベルの型には public, internal の2つのうちのどちらかだけが利用可能です。


各アクセス修飾子の特徴と使い方

public(公開)

public は最もオープンなアクセス修飾子で、どこからでもアクセス可能です。

使用例

public class Example
{
public string Name { get; set; }

public void PrintName()
{
Console.WriteLine(Name);
}
}
  • 使いどころ
    • 外部のコードから利用されるメソッドやプロパティに使用。
    • APIやライブラリの公開メソッドなど。

private(非公開)

private は、定義されたクラス内でのみアクセス可能です。他のクラスや外部からは直接触れられません。

使用例

public class Example
{
private int _id;

public void SetId(int id)
{
_id = id;
}

public int GetId()
{
return _id;
}
}
  • 使いどころ
    • クラスの内部状態を保護したい場合。
    • 外部に公開する必要がないデータやロジック。

protected

protected は、定義されたクラスおよびその派生クラスでアクセス可能です。

使用例

public class BaseClass
{
protected string ProtectedProperty { get; set; }
}

public class DerivedClass : BaseClass
{
public void AccessProtectedProperty()
{
ProtectedProperty = "Accessible in derived class";
Console.WriteLine(ProtectedProperty);
}
}
  • 使いどころ
    • 継承関係において、子クラスでのみ使わせたいメンバーに使用。

internal(アセンブリ内公開)

internal は、同じアセンブリ(プロジェクト)内でのみアクセス可能です。

.netでクラスを追加した際にデフォルトで使用されるアクセス修飾子です。

使用例

internal class InternalClass
{
internal void DisplayMessage()
{
Console.WriteLine("This is an internal method.");
}
}
  • 使いどころ
    • アプリケーション内でのみ利用されるクラスやメソッド。
    • 外部公開しないライブラリのユーティリティメソッド。

protected internal

protected internal は、同じアセンブリ内および派生クラスでアクセス可能な範囲を提供します。

使用例

public class BaseClass
{
protected internal void ProtectedInternalMethod()
{
Console.WriteLine("This is a protected internal method.");
}
}

public class DerivedClass : BaseClass
{
public void CallProtectedInternalMethod()
{
ProtectedInternalMethod();
}
}
  • 使いどころ
    • アセンブリ内と継承関係のクラスに限定したアクセスを許可する場合。

アクセス修飾子の比較表

修飾子同じクラス派生クラス同じアセンブリ外部(他アセンブリ)
public
private
protected
internal
protected internal

アクセス修飾子の選び方

  • データを隠したいprivate を使用。
  • 継承クラスで利用したいprotected を検討。
  • プロジェクト内のみで使う機能internal を適用。
  • どこでも使える汎用的な機能public を設定。

適切なアクセス修飾子を選ぶことで、コードの可読性やセキュリティが向上します。

基本は狭い範囲のアクセス修飾子を使用しておき、必要に応じて緩めるようにすることをお勧めします。

 


まとめ

C#のアクセス修飾子は、コードの保守性やセキュリティを高めるために重要な役割を果たします。本記事で紹介した各修飾子の特徴と使いどころを参考に、適切なアクセス制御を行いましょう。

コメント

タイトルとURLをコピーしました