Diretiva using (Referência de C#)using directive (C# Reference)

A diretiva using tem três usos:The using directive has three uses:

  • Para permitir o uso de tipos em um namespace para que você não precise qualificar o uso de um tipo nesse namespace: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;
    
  • Para permitir que você acesse membros estáticos e tipos aninhados de um tipo sem precisar qualificar o acesso com o nome do tipo.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;
    

    Para obter mais informações, consulte a diretiva using static.For more information, see the using static directive.

  • Para criar um alias para um namespace ou um tipo.To create an alias for a namespace or a type. Isso é chamado de uma diretiva alias de using.This is called a using alias directive.

    using Project = PC.MyCompany.Project;
    

A palavra-chave using também é usada para criar instruções using, o que ajuda a garantir que objetos IDisposable, tais como arquivos e fontes, sejam tratados corretamente.The using keyword is also used to create using statements, which help ensure that IDisposable objects such as files and fonts are handled correctly. Consulte a Instrução using para obter mais informações.See using Statement for more information.

Tipo using staticUsing static type

Você pode acessar os membros estáticos de um tipo sem precisar qualificar o acesso com o nome do tipo: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));
    }
}

ComentáriosRemarks

O escopo de uma diretiva using é limitado ao arquivo em que ele aparece.The scope of a using directive is limited to the file in which it appears.

A diretiva using pode aparecer:The using directive can appear:

  • No início de um arquivo de código-fonte, antes de quaisquer definições de namespace ou tipo.At the beginning of a source code file, before any namespace or type definitions.
  • Em qualquer namespace, mas antes de qualquer namespace ou tipos declarados neste namespace.In any namespace, but before any namespace or types declared in this namespace.

Caso contrário, serão gerados erros do compilador CS1529.Otherwise, compiler error CS1529 is generated.

Crie uma diretiva de alias using para tornar mais fácil a qualificação de um identificador para um namespace ou tipo.Create a using alias directive to make it easier to qualify an identifier to a namespace or type. Em qualquer diretiva using, o namespace totalmente qualificado ou o tipo deve ser usado independentemente das diretivas using que vêm antes.In any using directive, the fully-qualified namespace or type must be used regardless of the using directives that come before it. Nenhum alias using pode ser usado na declaração de uma diretiva using.No using alias can be used in the declaration of a using directive. Por exemplo, o código a seguir gera um erro de compilador:For example, the following generates a compiler error:

using s = System.Text;
using s.RegularExpressions; // Generates a compiler error.

Crie uma diretiva using para usar os tipos em um namespace sem precisar especificar o namespace.Create a using directive to use the types in a namespace without having to specify the namespace. Uma diretiva using não fornece acesso a nenhum namespace aninhado no namespace especificado.A using directive does not give you access to any namespaces that are nested in the namespace you specify.

Os namespaces vêm em duas categorias: definidos pelo usuário e definidos pelo sistema.Namespaces come in two categories: user-defined and system-defined. Os namespaces definidos pelo usuário são namespaces definidos em seu código.User-defined namespaces are namespaces defined in your code. Para obter uma lista dos namespaces definidos pelo sistema, consulte Navegador de API do .NET.For a list of the system-defined namespaces, see .NET API Browser.

Exemplo 1Example 1

O exemplo a seguir mostra como definir e usar um alias de using para um namespace: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 { }
        }
    }
}

Uma diretiva alias de using não pode ter um tipo genérico aberto no lado direito.A using alias directive cannot have an open generic type on the right hand side. Por exemplo, você não pode criar um alias de using para um List<T>, mas pode criar um para um List<int>.For example, you cannot create a using alias for a List<T>, but you can create one for a List<int>.

Exemplo 2Example 2

O exemplo a seguir mostra como definir uma diretiva using e um alias using para uma classe: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.

Especificação da linguagem C#C# language specification

Para obter mais informações, consulte Diretivas using na Especificação da Linguagem C#.For more information, see Using directives in the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Confira tambémSee also