Direttiva using (Riferimenti per C#)using directive (C# Reference)

La direttiva using ha tre usi:The using directive has three uses:

  • Consentire l'uso di tipi in uno spazio dei nomi in modo da non dover qualificare l'uso di un tipo in tale spazio dei nomi: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;
    
  • Consentire l'accesso ai membri statici e ai tipi nidificati di un tipo senza dover qualificare l'accesso con il nome del 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;
    

    Per altre informazioni, vedere la direttiva using static.For more information, see the using static directive.

  • Creare un alias per uno spazio dei nomi o un tipo.To create an alias for a namespace or a type. Si tratta di una direttiva alias using.This is called a using alias directive.

    using Project = PC.MyCompany.Project;
    

La parola chiave using viene usata anche per creare istruzioni using, che garantiscono che gli oggetti IDisposable, ad esempio file e tipi di carattere, vengano gestiti correttamente.The using keyword is also used to create using statements, which help ensure that IDisposable objects such as files and fonts are handled correctly. Per altre informazioni, vedere Istruzione using.See using Statement for more information.

Tipo using staticUsing static type

È possibile accedere ai membri statici di un tipo senza dover qualificare l'accesso con il nome del 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));
    }
}

NoteRemarks

L'ambito di una direttiva using è limitato al file in cui viene visualizzata.The scope of a using directive is limited to the file in which it appears.

La direttiva using può essere visualizzata:The using directive can appear:

  • All'inizio del file del codice sorgente, prima di eventuali definizioni di spazio dei nomi o tipo.At the beginning of a source code file, before any namespace or type definitions.
  • In qualsiasi spazio dei nomi, ma prima di un spazio dei nomi o di tipi dichiarati nello spazio dei nomi.In any namespace, but before any namespace or types declared in this namespace.

In caso contrario, viene generato l'errore del compilatore CS1529.Otherwise, compiler error CS1529 is generated.

Creare una direttiva alias using per semplificare la qualifica di un identificatore in uno spazio dei nomi o un tipo.Create a using alias directive to make it easier to qualify an identifier to a namespace or type. In una direttiva using è necessario usare lo spazio dei nomi o il tipo completo indipendentemente dalle direttive using che la precedono.In any using directive, the fully-qualified namespace or type must be used regardless of the using directives that come before it. Non è possibile usare alcun alias using nella dichiarazione di una direttiva using.No using alias can be used in the declaration of a using directive. Ad esempio, il codice seguente genera un errore del compilatore:For example, the following generates a compiler error:

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

Creare una direttiva using per usare i tipi in uno spazio dei nomi senza dover specificare tale spazio dei nomi.Create a using directive to use the types in a namespace without having to specify the namespace. Una direttiva using non offre accesso ad alcuno spazio dei nomi annidato nello spazio dei nomi specificato.A using directive does not give you access to any namespaces that are nested in the namespace you specify.

Gli spazi dei nomi sono disponibili in due categorie: definiti dall'utente e definiti dal sistema.Namespaces come in two categories: user-defined and system-defined. Gli spazi dei nomi definiti dall'utente vengono definiti nel codice.User-defined namespaces are namespaces defined in your code. Per un elenco di spazi dei nomi definiti dal sistema, vedere Browser API .NET.For a list of the system-defined namespaces, see .NET API Browser.

Esempio 1Example 1

Nell'esempio seguente viene illustrato come definire e usare un alias using per uno spazio dei nomi.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 { }
        }
    }
}

Una direttiva alias using non può contenere un tipo generico aperto nella parte destra.A using alias directive cannot have an open generic type on the right hand side. Ad esempio, non è possibile creare un alias using perList<T>, ma è possibile crearne uno per List<int>.For example, you cannot create a using alias for a List<T>, but you can create one for a List<int>.

Esempio 2Example 2

Nell'esempio seguente viene illustrato come definire una direttiva using e un alias using per una 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.

Specifiche del linguaggio C#C# language specification

Per altre informazioni, vedere Direttive using in Specifica del linguaggio C#.For more information, see Using directives in the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also