using (Directiva, Referencia de C# Reference)

La directiva using tiene tres usos:

  • Permitir el uso de tipos en un espacio de nombres de manera que no tenga que calificar el uso de un tipo en dicho espacio de nombres:

    using System.Text;
    
  • Permitirle acceder a los miembros estáticos y a los tipos anidados de un tipo sin tener que calificar el acceso con el nombre del tipo.

    using static System.Math;
    

    Para obtener más información, vea using static (Directiva).

  • Para crear un alias para un espacio de nombre o un tipo. Esto se conoce como alias using (Directiva).

    using Project = PC.MyCompany.Project;
    

La palabra clave using también se usa para crear instrucciones using, que ayudan a garantizar que los objetos IDisposable, como archivos y fuentes, se tratan correctamente. Consulte using (Instrucción) para obtener más información.

Uso de tipos estáticos

Puede acceder a los miembros estáticos de un tipo sin tener que calificar el acceso con el nombre del tipo:

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

Comentarios

El ámbito de una directiva using se limita al archivo en el que aparece.

La directiva using puede aparecer:

  • Al principio de un archivo de código fuente, antes de las definiciones de espacio de nombres o tipo.
  • En cualquier espacio de nombres, pero antes de cualquier espacio de nombres o tipos declarados en este espacio de nombres.

De lo contrario, se generará el error de compilador CS1529.

Cree una directiva de alias using para facilitar la calificación de un identificador como espacio de nombres o tipo. En cualquier directiva using, hay que usar el espacio de nombres o el tipo con cualificación completa, independientemente de las directivas using que los precedan. No se puede usar ningún alias using en la declaración de una directiva using. Por ejemplo, el código siguiente genera un error de compilador:

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

Cree una directiva using para usar los tipos de un espacio de nombres sin tener que especificarlo. Una directiva using no proporciona acceso a los espacios de nombres que están anidados en el espacio de nombres especificado.

Los espacios de nombres se dividen en dos categorías: definidos por el sistema y definidos por el usuario. Los espacios de nombres definidos por el usuario son espacios de nombres definidos en el código. Para obtener una lista de los espacios de nombres definidos por el sistema, vea Explorador de API de .NET.

Ejemplo 1

En el ejemplo siguiente se muestra cómo definir y usar un alias using para un espacio de nombres:

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 { }
        }
    }
}

Una directiva de alias using no puede tener un tipo genérico abierto en el lado derecho. Por ejemplo, no puede crear un alias using para un elemento List<T>, pero puede crear uno para un elemento List<int>.

Ejemplo 2

En el ejemplo siguiente se muestra cómo definir una directiva using y un alias using para una clase:

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.

Especificación del lenguaje C#

Para obtener más información, vea la sección Directivas using de la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también