.net column

.NET開発者のためのブログメディア

【internalの使い方】C#のアクセス修飾子を解説その1

2020年08月20日

C#はオブジェクト指向の言語です。オブジェクト指向の言語を構成する要素にクラスがあります。クラスのメンバー変数やメソッドには、アクセシビリティというものが存在しています。どこからアクセスできるかという制限の度合いを表し、そのひとつに internal修飾子があります。ここではinternal修飾子について解説していきます。

PG
クラスを使ってプログラミングを行うオブジェクト指向では、アクセス修飾子ってとても大事な要素ですよね。publicやprivate以外の修飾子はあまり理解できていないです……
PM
publicやprivateは修飾子の基本ですが、他の修飾子まで理解されている方って案外少ないです。ここで理解を深めていきましょう!

実行環境
・Visual Studio Community 2017

アクセス修飾子とは?活用場面の紹介

C#には様々なアクセス修飾子が存在します。まず、どのような修飾子があるのか確認しておきます。
以下アセンブリという単語が出てきますが、アセンブリ とは実行可能ファイル(exe)またはライブラリ(dll)のことを指します。C# の場合ですと、1つのプロジェクトで1つのアセンブリが作成されます。

public修飾子

他のプロジェクトからでも参照設定がされていればアクセスができる修飾子です。どこからでもアクセスできるので便利な反面、プログラムを修正する際にはどこまで影響範囲があるのかの確認が必要となってきます。

サードパーティーのDLLを読み込んで実装する場合、ビルド段階ではなく、実行段階にならないとエラー箇所が判明しないなど、安易に使うのはあまりおすすめされていません。

internal

同一アセンブリ内のクラスからのみアクセス可能な修飾子です。他のプロジェクトからは、参照設定がされていてもinternalの場合はアクセス不可となります。
publicと違い修正範囲が限定されているため、同じアセンブリ内でのみ使用するならば、こちらを使う方が良いでしょう。

protected

クラス内部と派生クラスの内部からのみアクセス可能な修飾子です。派生クラスとは、継承しているクラス(親子関係の子サイド)のことを指します。

基底クラスだけで使用する場合にはprivateとし、派生クラスにも使わせる必要がある場合はprotectedを実装します。違うアセンブリであっても継承関係にあればprotectedの参照は可能です。

private

クラス内部からのみアクセス可能な修飾子です。外部から参照されることがなく、他のクラスの影響を受けない分、一番制限が厳しい修飾子だといえます。
クラスなどの型定義は、名前空間直下やファイル直下に書けますが、この場合に指定できるアクセス修飾子は、public と internal の2種類のみです。

また、メソッドなどのアクセス修飾子を明示的に指定しなかった場合には、自動的にprivate扱いされるので注意が必要です。

internalアクセス修飾子の使い方

internalアクセス修飾子の実装方法について確認していきます。

internal結果

protected internalアクセス修飾子の使い方

protected internalアクセス修飾子の実装方法についても確認しておきましょう。

protected internal結果

PG
アクセス修飾子っていろいろあるのですね。アセンブリの範囲などを考慮してinternalアクセス修飾子もこれから使っていきます!
PM
アクセス制限は、クラスがあるオブジェクト指向の言語では必ず理解が必要な事柄です。早めに理解して上手に使い分けていきましょう。

アクセス修飾子は上手に使い分けましょう

どのアクセス修飾子を使うかは、開発者が自らの判断で実装することになります。最初はpublicを使いがちですが、そこはアクセス制限をしっかり考慮して、隠蔽させることも大切なプログラミングの要素です。ここで解説したinternalを上手に使いこなして、プログラムの質を向上させていきましょう。

>>>C#の案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)