C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#クラスのinternal変数のスコープとは?アクセス修飾子の使い方を解説

C#では、internalアクセス修飾子を指定することで、クラスのメンバー変数を「内部変数」として宣言できます。

internal double length;
internal double 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());
        }
    } // end class Rectangle
    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.length = 4.5;
            r.width = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

この例では、Rectangleクラスのlengthwidthinternalとして宣言されています。同じ名前空間内にあるExecuteRectangleクラスのMainメソッドから、これらの変数に直接値を代入できることがわかります。

実行結果

Length: 4.5
Width: 3.5
Area: 15.75

このように、同一アセンブリ内であればinternalメンバーに問題なくアクセスでき、プログラムが正しく動作します。なお、別のアセンブリ(プロジェクト)からこのクラスを利用しようとした場合、internalメンバーにはアクセスできずコンパイルエラーとなる点に注意してください。

  1. C#のArrayListクラスとは?主なメソッド一覧とSort()による並べ替え方法を解説

    ArrayListクラスは、個別にインデックスでアクセスできるオブジェクトの順序付きコレクションを表します。基本的には配列(Array)の代替として利用できる便利なコレクションです。要素数が事前にわからない場合でも動的にサイズが拡張されるため、柔軟なデータ管理が可能になります。ArrayListクラスの主なメソッドArrayListクラスには、要素の追加・削除・検索・並べ替えなどを行うための多彩なメソッドが用意されています。以下に主要なメソッドとその説明をまとめました。番号メソッドと説明1public virtual int Add(object value);ArrayListの末尾にオブジ

  2. C#におけるクラスのデフォルトアクセス修飾子とは?internalの基本を解説

    C#では、クラスやメンバにアクセス修飾子を明示的に指定しなかった場合、デフォルトのアクセスレベルはinternal(内部)になります。internalアクセス指定子が付いたクラスやメンバは、同じアセンブリ(同一プロジェクト・同一EXE/DLL)内にある他のクラスやメソッドから自由にアクセスできます。ただし、アセンブリの外部からは参照できないため、ライブラリ内部でのみ使用する型やメンバを定義したい場合に適しています。言い換えると、internalメンバは「そのメンバが定義されているアプリケーション(アセンブリ)内であれば、どのクラス・どのメソッドからでもアクセス可能」ということになります。int