簡単な例を挙げると、単純な 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