using ディレクティブ (C# リファレンス)
using ディレクティブは、次の 2 つの場合に使用します。
名前空間で型の使用を許可する場合。これにより、その名前空間内の型は修飾しないで使用できます。
using System.Text;
名前空間または型のエイリアスを作成する場合。 これを、using alias ディレクティブといいます。
using Project = PC.MyCompany.Project;
using キーワードは、using ステートメントの作成にも使用します。ファイルやフォントなどの IDisposable オブジェクトが正しく処理されるようにします。 詳細については、「using ステートメント (C# リファレンス)」を参照してください。
解説
using ディレクティブのスコープは、ディレクティブが記述されているファイルに限定されます。
using エイリアスを定義すると、名前空間または型の識別子を簡単に修飾できます。 using alias ディレクティブの右側は、その前に来る using ディレクティブとは関係なく、常に完全修飾型である必要があります。
using ディレクティブを定義すると、名前空間を指定しないで、名前空間で型を使用できます。 using ディレクティブでは、指定した名前空間内に入れ子になった別の名前空間へのアクセスは許可されません。
名前空間には、ユーザー定義の名前空間とシステム定義の名前空間の 2 種類があります。 ユーザー定義の名前空間とは、ユーザーが記述するコードで定義される名前空間です。 システム定義の名前空間の一覧については、「.NET Framework クラス ライブラリ」を参照してください。
他のアセンブリのメソッドの参照例については、「C# の DLL の作成と使用」を参照してください。
例 1
説明
名前空間の using エイリアスを定義して使用する例を次に示します。
コード
namespace PC
{
// Define an alias for the nested namespace.
using Project = PC.MyCompany.Project;
class A
{
void M()
{
// Use the alias
Project.MyClass mc = new Project.MyClass();
}
}
namespace MyCompany
{
namespace Project
{
public class MyClass { }
}
}
}
コメント
using alias ディレクティブは、右側にオープン ジェネリック型を持たせることはできません。 たとえば、List<T> の using alias を作成することはできませんが、List<int> の using alias は作成できます。
例 2
説明
クラスの using ディレクティブと using エイリアスを定義する例を次に示します。
コード
using System;
// Using alias directive for a class.
using AliasToMyClass = NameSpace1.MyClass;
// Using alias directive for a generic class.
using UsingAlias = NameSpace2.MyClass<int>;
namespace NameSpace1
{
public class MyClass
{
public override string ToString()
{
return "You are in NameSpace1.MyClass.";
}
}
}
namespace NameSpace2
{
class MyClass<T>
{
public override string ToString()
{
return "You are in NameSpace2.MyClass.";
}
}
}
namespace NameSpace3
{
// Using directive:
using NameSpace1;
// Using directive:
using NameSpace2;
class MainClass
{
static void Main()
{
AliasToMyClass instance1 = new AliasToMyClass();
Console.WriteLine(instance1);
UsingAlias instance2 = new UsingAlias();
Console.WriteLine(instance2);
}
}
}
// Output:
// You are in NameSpace1.MyClass.
// You are in NameSpace2.MyClass.
C# 言語仕様
詳細については、「C# 言語仕様」を参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。