C#のinternalキーワードとは?アクセス修飾子の役割と使い方を解説
C#における internal キーワードは、メンバーに対して「内部(internal)」アクセス修飾子を指定するために使用されます。このキーワードを使うことで、クラスのメンバー変数やメソッドへのアクセス範囲を、同一アセンブリ内に限定できます。
internalアクセス修飾子の基本
internal アクセス修飾子が付いたクラスやメンバーは、同じアセンブリ(プロジェクト)内にある他のクラスやメソッドから自由にアクセス可能ですが、アセンブリの外部からは参照できません。
つまり、あるメンバーに internal を指定した場合、そのメンバーが定義されているアプリケーション(アセンブリ)内であれば、どのクラスやメソッドからでもアクセスできます。
他のアクセス修飾子との違い
- public:アセンブリの外部を含む、すべてのコードからアクセス可能
- internal:同一アセンブリ内からのみアクセス可能
- private:同一クラス内からのみアクセス可能
ライブラリやフレームワークを開発する際、外部には公開せずプロジェクト内だけで使いたい機能がある場合に、internal は非常に有効です。
internalキーワードの使用例
以下のサンプルコードでは、Rectangle クラスの length フィールドと width フィールドに internal を指定しています。
using System;
namespace RectangleApplication {
class Rectangle {
internal double length;
internal double width;
double GetArea() {
return length * width;
}
public void Display() {
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
class Demo {
static void Main(string[] args) {
Rectangle rc = new Rectangle();
rc.length = 10.35;
rc.width = 8.3;
rc.Display();
Console.ReadLine();
}
}
}
コードの解説
Rectangle クラスと Demo クラスは同じアセンブリ(同じ名前空間・プロジェクト)内に存在するため、Main メソッドから rc.length や rc.width といった internal メンバーに直接アクセスできます。
このプログラムを実行すると、次のような出力結果が得られます。
Length: 10.35 Width: 8.3 Area: 85.905
まとめ
internal キーワードを使用することで、クラスのメンバーを同一アセンブリ内に限定して公開できます。これにより、外部ライブラリとして配布する際に不要なAPIの露出を防ぎ、カプセル化を強化しながら、プロジェクト内では柔軟にメンバーを共有できるようになります。
-
HTMLページでheadタグを使う理由とは?基本的な使い方を解説
<head>タグは、HTMLページ内のすべてのヘッダー要素を格納するためのコンテナです。画面上に直接表示される本文(body)とは異なり、文書自体に関する情報=メタデータを定義する重要な役割を担っています。 <head>…</head>タグの追加方法はとても簡単です。この中には、文書のタイトル(<title>)、メタ情報(<meta>)、スタイルの定義(<style>や<link>)、スクリプトの読み込み(<script>)などを記述します。 特に覚えておきたいのは、<title>…&l
-
HTMLドキュメントにDOCTYPE宣言が必要な理由とは?種類と書き方を徹底解説
HTMLにおける<!DOCTYPE>タグは、そのドキュメントがどのバージョンのHTMLで記述されているかをブラウザに伝えるためのものです。これを「文書型宣言」と呼びます。 <!DOCTYPE>宣言は、HTMLドキュメント内で最初に現れる要素であり、必ず<html>タグよりも前に記述します。また、<!DOCTYPE>タグには終了タグが存在しない点にも注意しましょう。 DOCTYPE宣言を正しく記述することで、ブラウザは標準準拠モード(スタンダードモード)でページをレンダリングします。逆に宣言がない場合、ブラウザが互換モード(クワークスモード)で動作