Директива using (справочник по C#)using directive (C# Reference)

Директива using используется в следующих трех целях.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 static.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 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.

Пространства имен делятся на две категории: пользовательские и системные.Namespaces come in two categories: user-defined and system-defined. Пользовательские пространства имен задаются в вашем коде.User-defined namespaces are namespaces defined in your code. Список системных пространств имен см. в разделе Браузер API .NET.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
            var 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. Например, нельзя создать псевдоним using для List<T>, но можно создать его для List<int>.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
{
    class MainClass
    {
        static void Main()
        {
            var instance1 = new AliasToMyClass();
            Console.WriteLine(instance1);

            var instance2 = new UsingAlias();
            Console.WriteLine(instance2);

        }
    }
}
// Output: 
//    You are in NameSpace1.MyClass.
//    You are in NameSpace2.MyClass.

Спецификация языка C#C# language specification

Дополнительные сведения см. в разделе Директивы using в статье Спецификация языка C#.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