ホーム プログラミング言語 C Shape C# 名前空間: 名前空間






C# 名前空間: 名前空間




 
C# では、名前空間は、名前空間内のメンバーの属性をマークするために使用される範囲とみなすことができます。ある名前空間内のクラスは、別の名前空間内の同じ名前のクラスと競合しませんが、同じ名前空間内のクラスとは競合しません。名前は一意である必要があります。

 

簡単な例を挙げると、単純な C# プログラムでデータを出力したい場合は、 System.Console.WriteLine()を使用する必要があります。ここで、 System は名前空間、Console はクラスの名前、WriteLine はクラスの名前です。特定のメソッドを使用します。つまり、特定の名前空間内のクラスにアクセスしたい場合は、 namespacename.classname.funcname()の形式を使用する必要があります。もちろん、 using Systemなど、 using キーワードを使用して必要な名前空間を参照することもできます。これにより、 Console.WriteLine()を直接使用して、指定されたデータを出力できます。

名前空間の構造は、コンピュータ システムのディレクトリに似ています。特定のディレクトリを名前空間とみなすことができます。このディレクトリにはいくつかの異なるフォルダが存在することができ、これらのフォルダは名前空間の下の名前空間とみなすことができます。そして、各フォルダの下にはいくつかのファイルやフォルダが格納されており、これらのファイルやフォルダはクラスのメンバーとみなすことができます。

名前空間を使用する利点は、名前の競合を回避できることと、クラスの場所を見つけやすいことです。

名前空間を定義する

C# で名前空間を定義するには、namespace キーワードを使用する必要があります。構文は次のとおりです。

namespace namespaceName{
    // 
}

指定した名前空間のメンバーを呼び出す場合は、 namespaceName.className.funcName()フォームを使用する必要があります。次に、名前空間の使用例を示します。

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            First.demoClass demo1 = new First.demoClass();
            Second.demoClass demo2 = new Second.demoClass();
            demo1.sayHello();
            demo2.sayHello();
        }
    }
}

namespace First{
    public class demoClass{
        public void sayHello(){
            System.Console.WriteLine("First 命名空間下 demoClass クラス中の sayHello 関数");
        }
    }
}

namespace Second{
    public class demoClass{
        public void sayHello(){
            System.Console.WriteLine("Second 命名空間下 demoClass クラス中の sayHello 関数");
        }
    }
} 

操作の結果は次のようになります。

First 命名空間下 demoClass クラス中の sayHello 関数

Second 命名空間下 demoClass クラス中の sayHello 関数

キーワードを使用して

using キーワードは、指定された名前空間を参照するために使用されます。これにより、背後のコードで特定の名前空間を使用する必要があることをコンパイラーに伝えることができます。たとえば、プログラム内で System 名前空間を使用する必要がある場合、プログラムの先頭でusing System使用して名前空間を参照するだけでよく、このとき、System 名前空間以下のクラスを使用する場合はSystem.を省略できます。 Console.WriteLine();など。例を示してみましょう:

 using System;
using First;
using Second;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            firstClass first = new firstClass();
            secondClass second = new secondClass();
            first.sayHello();
            second.sayHello();
        }
    }
}

namespace First{
    public class firstClass{
        public void sayHello(){
            System.Console.WriteLine("First namespace");
        }
    }
}

namespace Second{
    public class secondClass{
        public void sayHello(){
            System.Console.WriteLine("Second namespace");
        }
    }
} 

操作の結果は次のようになります。

First namespace
Second namespace

名前空間のネスト

名前空間は入れ子にすることができます。つまり、次のように、名前空間内に 1 つ以上の名前空間を定義できます。

namespace namespaceName1{
    // namespaceName1 
    namespace namespaceName2{
        // namespaceName2 
    }
}

dot .演算子を使用して、 namespaceName1.namespaceName2などのネストされた名前空間メンバーにアクセスできます。次の例は、名前空間のネストされた使用を示しています。

 using System;
using First;
using First.Second;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args) 
        {
            firstClass first = new firstClass();
            secondClass second = new secondClass();
            first.sayHello();
            second.sayHello();
        }
    }
}

namespace First{
    public class firstClass{
        public void sayHello(){
            System.Console.WriteLine("First namespace");
        }
    }
    namespace Second{
        public class secondClass{
            public void sayHello(){
                System.Console.WriteLine("Second namespace");
            }
        }
    }
} 

操作の結果は次のようになります。

First namespace
Second namespace

「C# 名前空間: 名前空間」についてわかりやすく解説!絶対に観るべきベスト2動画

名前空間について【プログラミング入門】【ゲームの作り方】#25
C# Namespace and Classes