C#の名前空間について

名前空間とは

プログラムを構成する一番外側の部分を指し、プログラムがどこに属しているかを示しています。
フォルダのような役割をイメージすれば分かりやすいかもしれません。
以下の例にあるようにProgramクラスはConsoleApp1という名前空間に属しています。
このようにして名前空間という単位でプログラムをまとめることができます。

// Program.cs
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = new Program2();
        }
    }
}

usingによる名前空間の参照

usingから名前空間を参照することで別の名前空間に属しているプログラムを使用することができます。
これをusingディレクティブと呼びます。

using ConsoleApp2とすることでConsoleApp2(Program2.cs)に属しているプログラムを使用できます。
名前空間を参照することでProgram2クラスをインスタンス化して、Program2クラスのメソッドを使用したりすることが可能になります。
逆にいうと、using ConsoleApp2の記述が無ければコンパイルエラーとなりProgram2クラスのインスタンスは作成できません。

// Program.cs
using ConsoleApp2;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = new Program2();
            a.Sample();
        }
    }
}
// Program2.cs
namespace ConsoleApp2
{
    class Program2
    {
        public void Sample()
        {

        }
    }
}

補足:using Systemについて

using Systemという記述をプログラムの冒頭で目にしたことは無いでしょうか?
これは何ら特別な書き方では無く、MicroSoftが用意してくれているSystemという名前空間に属しているプログラムを使用しますという宣言にすぎません。

Console.WriteLine()をよく使うと思いますが、これは名前空間Systemの中にあるConsoleクラスで定義されているWriteLineメソッドを使用しているだけです。

あくまでもイメージですが大体こんな感じです。

namespace System
{
    class Console
    {
        public void WriteLine()
        {
        }
    }
}
System 名前空間
一般的に使用される値型と参照データ型、イベントとイベント ハンドラー、インターフェイス、属性、および処理例外を定義する基底クラスが含まれています。

コメント

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