using ディレクティブ (C# リファレンス)using directive (C# Reference)

using ディレクティブは、次の 3 つの用途で使用します。The using directive has three uses:

  • 名前空間で型の使用を許可する場合。これにより、その名前空間内では型を修飾せずに使用できます。To allow the use of types in a namespace so that you do not have to qualify the use of a type in that namespace:

    using System.Text;
    
  • アクセスを型名で修飾することなく、型の静的メンバーおよび入れ子にされた型へのアクセスを許可する場合。To allow you to access static members and nested types of a type without having to qualify the access with the type name.

    using static System.Math;
    

    詳細については、「using static ディレクティブ」を参照してください。For more information, see the using static directive.

  • 名前空間または型のエイリアスを作成する場合。To create an alias for a namespace or a type. これは "using エイリアス ディレクティブ" と呼ばれます。This is called a using alias directive.

    using Project = PC.MyCompany.Project;
    

using キーワードは、using ステートメントの作成にも使用します。ファイルやフォントなどの IDisposable オブジェクトを正しく処理できるようになります。The using keyword is also used to create using statements, which help ensure that IDisposable objects such as files and fonts are handled correctly. 詳しくは、「using ステートメント」をご覧ください。See using Statement for more information.

using static 型Using static type

アクセスを型名で修飾することなく型の静的メンバーにアクセスできます。You can access static members of a type without having to qualify the access with the type name:

using static System.Console;
using static System.Math;
class Program
{
    static void Main()
    {
        WriteLine(Sqrt(3*3 + 4*4));
    }
}

コメントRemarks

using ディレクティブのスコープは、このディレクティブが存在するファイルに限定されます。The scope of a using directive is limited to the file in which it appears.

using ディレクティブは、次のように記述することができます。The using directive can appear:

  • ソース コード ファイルの先頭、任意の名前空間または型定義の前。At the beginning of a source code file, before any namespace or type definitions.
  • 任意の名前空間内、ただし、この名前空間内で宣言された任意の名前空間または型の前。In any namespace, but before any namespace or types declared in this namespace.

それ以外の場合は、コンパイラ エラー CS1529 が生成されます。Otherwise, compiler error CS1529 is generated.

using 別名ディレクティブを作成すると、名前空間または型の識別子を修飾しやすくなります。Create a using alias directive to make it easier to qualify an identifier to a namespace or type. いずれの using ディレクティブにおいても、前に置かれる using に関係なく、完全に修飾された名前空間または型を使用する必要があります。In any using directive, the fully-qualified namespace or type must be used regardless of the using directives that come before it. using ディレクティブの宣言内では、using 別名を使用することができません。No using alias can be used in the declaration of a using directive. たとえば、次の場合はコンパイラ エラーが生成されます。For example, the following generates a compiler error:

using s = System.Text;
using s.RegularExpressions;

using ディレクティブを作成すると、名前空間内の型を、名前空間を指定することなく使用できます。Create a using directive to use the types in a namespace without having to specify the namespace. using ディレクティブでは、指定した名前空間に入れ子になった別の名前空間へのアクセスは許可されません。A using directive does not give you access to any namespaces that are nested in the namespace you specify.

名前空間は、ユーザー定義とシステム定義の 2 つのカテゴリに分類されます。Namespaces come in two categories: user-defined and system-defined. ユーザー定義の名前空間は、コードで定義された名前空間です。User-defined namespaces are namespaces defined in your code. システム定義の名前空間の一覧については、「.NET API ブラウザー」を参照してください。For a list of the system-defined namespaces, see .NET API Browser.

他のアセンブリのメソッドを参照する方法の例については、コマンド ラインでアセンブリを作成し、使用する方法に関するページをご覧ください。For examples on referencing methods in other assemblies, see Create and Use Assemblies Using the Command Line.

例 1Example 1

次の例は、名前空間の using エイリアスを定義して使用する方法を示しています。The following example shows how to define and use a using alias for a namespace:

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 エイリアス ディレクティブの右側には、オープン ジェネリック型を配置できません。A using alias directive cannot have an open generic type on the right hand side. たとえば、List<T> の using エイリアスを作成することはできませんが、List<int> の using エイリアスは作成できます。For example, you cannot create a using alias for a List<T>, but you can create one for a List<int>.

例 2Example 2

次の例は、クラスの using ディレクティブと using エイリアスを定義する方法を示しています。The following example shows how to define a using directive and a using alias for a class:

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# language specification

詳細については、C# 言語仕様に関するページの using ディレクティブに関するセクションを参照してください。For more information, see Using directives in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also