ConstructorInfo Classe

Definizione

Individua gli attributi di un costruttore di classe e fornisce l'accesso ai metadati del costruttore.

public ref class ConstructorInfo abstract : System::Reflection::MethodBase
public ref class ConstructorInfo abstract : System::Reflection::MethodBase, System::Runtime::InteropServices::_ConstructorInfo
public abstract class ConstructorInfo : System.Reflection.MethodBase
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
public abstract class ConstructorInfo : System.Reflection.MethodBase, System.Runtime.InteropServices._ConstructorInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class ConstructorInfo : System.Reflection.MethodBase, System.Runtime.InteropServices._ConstructorInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class ConstructorInfo : System.Reflection.MethodBase
type ConstructorInfo = class
    inherit MethodBase
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
type ConstructorInfo = class
    inherit MethodBase
    interface _ConstructorInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConstructorInfo = class
    inherit MethodBase
    interface _ConstructorInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ConstructorInfo = class
    inherit MethodBase
Public MustInherit Class ConstructorInfo
Inherits MethodBase
Public MustInherit Class ConstructorInfo
Inherits MethodBase
Implements _ConstructorInfo
Ereditarietà
ConstructorInfo
Derivato
Attributi
Implementazioni

Esempio

Nell'esempio seguente ConstructorInfo viene utilizzato con e per trovare i GetConstructor BindingFlags costruttori che corrispondono ai criteri di ricerca specificati.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyClass1
{
public:
   MyClass1( int i ){}

};

int main()
{
   try
   {
      Type^ myType = MyClass1::typeid;
      array<Type^>^types = gcnew array<Type^>(1);
      types[ 0 ] = int::typeid;
      
      // Get the public instance constructor that takes an integer parameter.
      ConstructorInfo^ constructorInfoObj = myType->GetConstructor( static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public), nullptr, CallingConventions::HasThis, types, nullptr );
      if ( constructorInfoObj != nullptr )
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is: " );
         Console::WriteLine( constructorInfoObj );
      }
      else
      {
         Console::WriteLine( "The constructor of MyClass1 that is a public instance method and takes an integer as a parameter is not available." );
      }
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e->Message );
   }
   catch ( ArgumentException^ e ) 
   {
      Console::WriteLine( "ArgumentException: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Reflection;
using System.Security;

public class MyClass1
{
    public MyClass1(int i){}
    public static void Main()
    {
        try
        {
            Type  myType = typeof(MyClass1);
            Type[] types = new Type[1];
            types[0] = typeof(int);
            // Get the public instance constructor that takes an integer parameter.
            ConstructorInfo constructorInfoObj = myType.GetConstructor(
                BindingFlags.Instance | BindingFlags.Public, null,
                CallingConventions.HasThis, types, null);
            if(constructorInfoObj != null)
            {
                Console.WriteLine("The constructor of MyClass1 that is a public " +
                    "instance method and takes an integer as a parameter is: ");
                Console.WriteLine(constructorInfoObj.ToString());
            }
            else
            {
                Console.WriteLine("The constructor of MyClass1 that is a public instance " +
                    "method and takes an integer as a parameter is not available.");
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(ArgumentException e)
        {
            Console.WriteLine("ArgumentException: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}
Public Class MyClass1
    Public Sub New(ByVal i As Integer)
    End Sub
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyClass1)
            Dim types(0) As Type
            types(0) = GetType(Integer)
            ' Get the public instance constructor that takes an integer parameter.
            Dim constructorInfoObj As ConstructorInfo = _
                        myType.GetConstructor(BindingFlags.Instance Or _
                        BindingFlags.Public, Nothing, _
                        CallingConventions.HasThis, types, Nothing)
            If Not (constructorInfoObj Is Nothing) Then
                Console.WriteLine("The constructor of MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is: ")
                Console.WriteLine(constructorInfoObj.ToString())
            Else
                Console.WriteLine("The constructor MyClass1 that " + _
                                  "is a public instance method and takes an " + _
                                  "integer as a parameter is not available.")
            End If
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException: " + e.Message)
        Catch e As ArgumentException
            Console.WriteLine("ArgumentException: " + e.Message)
        Catch e As SecurityException
            Console.WriteLine("SecurityException: " + e.Message)
        Catch e As Exception
            Console.WriteLine("Exception: " + e.Message)
        End Try
    End Sub
End Class

Commenti

ConstructorInfo viene usato per individuare gli attributi di un costruttore e per richiamare un costruttore. Gli oggetti vengono creati chiamando Invoke su ConstructorInfo un oggetto restituito dal metodo o GetConstructors di un oggetto GetConstructor Type .

Nota

ConstructorInfo eredita da MethodBase diversi membri, ad esempio IsGenericMethod , che possono essere usati per esaminare i metodi generici. Nell'.NET Framework i costruttori della versione 2.0 non possono essere generici, quindi questi membri restituiscono false o null .

Note per gli implementatori

Quando si eredita da ConstructorInfo , è necessario eseguire l'override dell'overload del membro seguente: Invoke(BindingFlags, Binder, Object[], CultureInfo) .

Costruttori

ConstructorInfo()

Inizializza una nuova istanza della classe ConstructorInfo.

Campi

ConstructorName

Rappresenta il nome del metodo del costruttore della classe così come è memorizzato nei metadati. Questo nome è sempre ".ctor". Questo campo è di sola lettura.

TypeConstructorName

Rappresenta il nome del metodo del costruttore del tipo così come è memorizzato nei metadati. Questo nome è sempre ".cctor". Questa proprietà è di sola lettura.

Proprietà

Attributes

Ottiene gli attributi associati a questo metodo.

(Ereditato da MethodBase)
CallingConvention

Ottiene un valore che indica le convenzioni di chiamata per questo metodo.

(Ereditato da MethodBase)
ContainsGenericParameters

Ottiene un valore che indica se il metodo generico contiene parametri di tipo generico non assegnati.

(Ereditato da MethodBase)
CustomAttributes

Ottiene una raccolta che contiene gli attributi personalizzati del membro.

(Ereditato da MemberInfo)
DeclaringType

Ottiene la classe che dichiara questo membro.

(Ereditato da MemberInfo)
IsAbstract

Ottiene un valore che indica se il metodo è astratto.

(Ereditato da MethodBase)
IsAssembly

Ottiene un valore che indica se la visibilità potenziale di questo metodo o costruttore è descritta da Assembly, ovvero se il metodo o costruttore è visibile al massimo ad altri tipi dello stesso assembly, ma non ai tipi derivati all'esterno dell'assembly.

(Ereditato da MethodBase)
IsCollectible

Ottiene un valore che indica se questo oggetto MemberInfo fa parte di un assembly conservato in un AssemblyLoadContext ritirabile.

(Ereditato da MemberInfo)
IsConstructedGenericMethod (Ereditato da MethodBase)
IsConstructor

Ottiene un valore che indica se il metodo è un costruttore.

(Ereditato da MethodBase)
IsFamily

Ottiene un valore che indica se la visibilità di questo metodo o costruttore è descritta da Family, ovvero se il metodo o costruttore è visibile solo all'interno della relativa classe e delle classi derivate.

(Ereditato da MethodBase)
IsFamilyAndAssembly

Ottiene un valore che indica se la visibilità di questo metodo o costruttore è descritta da FamANDAssem, ovvero se è possibile chiamare il metodo o il costruttore da classi derivate, ma solo se appartenenti allo stesso assembly.

(Ereditato da MethodBase)
IsFamilyOrAssembly

Ottiene un valore che indica se la visibilità potenziale di questo metodo o costruttore è descritta da FamORAssem, ovvero se è possibile chiamare il metodo o il costruttore da classi derivate indipendentemente dalla posizione e da classi appartenenti allo stesso assembly.

(Ereditato da MethodBase)
IsFinal

Ottiene un valore che indica se il metodo è final.

(Ereditato da MethodBase)
IsGenericMethod

Ottiene un valore che indica se il metodo è generico.

(Ereditato da MethodBase)
IsGenericMethodDefinition

Ottiene un valore che indica se il metodo è una definizione di un metodo generico.

(Ereditato da MethodBase)
IsHideBySig

Ottiene un valore che indica se nella classe derivata è nascosto un solo membro dello stesso tipo che riporta esattamente la stessa firma.

(Ereditato da MethodBase)
IsPrivate

Ottiene un valore che indica se questo membro è privato.

(Ereditato da MethodBase)
IsPublic

Ottiene un valore che indica se si tratta di un metodo pubblico.

(Ereditato da MethodBase)
IsSecurityCritical

Ottiene un valore che indica se il metodo o il costruttore corrente è critico per la sicurezza o security-safe-critical al livello di attendibilità corrente, e pertanto può eseguire operazioni critiche.

(Ereditato da MethodBase)
IsSecuritySafeCritical

Ottiene un valore che indica se il metodo o il costruttore corrente è security-safe-critical al livello di attendibilità corrente, vale a dire se può eseguire operazioni critiche ed essere richiamato da codice trasparente.

(Ereditato da MethodBase)
IsSecurityTransparent

Ottiene un valore che indica se il metodo o il costruttore corrente è trasparente al livello di attendibilità corrente, e pertanto non può eseguire operazioni critiche.

(Ereditato da MethodBase)
IsSpecialName

Ottiene un valore che indica se questo metodo ha un nome speciale.

(Ereditato da MethodBase)
IsStatic

Ottiene un valore che indica se il metodo è static.

(Ereditato da MethodBase)
IsVirtual

Ottiene un valore che indica se il metodo è virtual.

(Ereditato da MethodBase)
MemberType

Ottiene un valore di MemberTypes che indica che questo membro è un costruttore.

MemberType

Quando viene eseguito l'override in una classe derivata, ottiene un valore MemberTypes che indica il tipo del membro, il metodo, il costruttore, l'evento e così via.

(Ereditato da MemberInfo)
MetadataToken

Ottiene un valore che identifica un elemento di metadati.

(Ereditato da MemberInfo)
MethodHandle

Ottiene un handle alla rappresentazione interna dei metadati di un metodo.

(Ereditato da MethodBase)
MethodImplementationFlags

Ottiene i flag MethodImplAttributes che specificano gli attributi di implementazione di un metodo.

(Ereditato da MethodBase)
Module

Ottiene il modulo in cui viene definito il tipo che dichiara il membro rappresentato dall'oggetto MemberInfo corrente.

(Ereditato da MemberInfo)
Name

Ottiene il nome del membro corrente.

(Ereditato da MemberInfo)
ReflectedType

Ottiene l'oggetto classe utilizzato per ottenere questa istanza di MemberInfo.

(Ereditato da MemberInfo)

Metodi

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

Equals(Object)

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.

(Ereditato da MethodBase)
GetCustomAttributes(Boolean)

Se sottoposto a override in una classe derivata, restituisce una matrice di tutti gli attributi personalizzati applicati a questo membro.

(Ereditato da MemberInfo)
GetCustomAttributes(Type, Boolean)

Quando viene sottoposto a override in una classe derivata, questo metodo restituisce una matrice di attributi personalizzati applicati a questo membro e identificati da Type.

(Ereditato da MemberInfo)
GetCustomAttributesData()

Restituisce un elenco di oggetti CustomAttributeData che rappresentano i dati relativi agli attributi applicati al membro di destinazione.

(Ereditato da MemberInfo)
GetGenericArguments()

Restituisce una matrice di oggetti Type che rappresentano gli argomenti tipo di un metodo generico o i parametri di tipo della definizione di un metodo generico.

(Ereditato da MethodBase)
GetHashCode()

Restituisce il codice hash per l'istanza.

GetHashCode()

Restituisce il codice hash per l'istanza.

(Ereditato da MethodBase)
GetMethodBody()

Se viene eseguito l'override in una classe derivata, ottiene un oggetto MethodBody che consente di accedere al flusso MSIL, alle variabili locali e alle eccezioni per il metodo corrente.

(Ereditato da MethodBase)
GetMethodImplementationFlags()

Quando è sottoposto a override in una classe derivata, restituisce i flag MethodImplAttributes.

(Ereditato da MethodBase)
GetParameters()

Quando viene sottoposto a override in una classe derivata, ottiene i parametri del metodo o del costruttore specificato.

(Ereditato da MethodBase)
GetType()

Individua gli attributi di un costruttore di classe e fornisce l'accesso ai metadati del costruttore.

GetType() (Ereditato da MethodBase)
HasSameMetadataDefinitionAs(MemberInfo) (Ereditato da MemberInfo)
Invoke(BindingFlags, Binder, Object[], CultureInfo)

Quando è implementato in una classe derivata, richiama il costruttore riprodotto da questo oggetto ConstructorInfo con gli argomenti specificati, in base ai vincoli dell'oggetto Binder specificato.

Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)

Quando viene sottoposto a override in una classe derivata, richiama il metodo o il costruttore ottenuto mediante reflection con i parametri specificati.

(Ereditato da MethodBase)
Invoke(Object, Object[])

Richiama il metodo o il costruttore rappresentato dall'istanza corrente usando i parametri specificati.

(Ereditato da MethodBase)
Invoke(Object[])

Richiama il costruttore riflesso dall'istanza che ha i parametri specificati fornendo i valori predefiniti per i parametri che non sono di uso comune.

IsDefined(Type, Boolean)

Quando se ne effettua l'override in una classe derivata, indica se a questo membro sono applicati uno o più attributi del tipo specificato o dei tipi derivati.

(Ereditato da MemberInfo)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Operatori

Equality(ConstructorInfo, ConstructorInfo)

Indica se due oggetti ConstructorInfo sono uguali.

Inequality(ConstructorInfo, ConstructorInfo)

Indica se due oggetti ConstructorInfo non sono uguali.

Implementazioni dell'interfaccia esplicita

_ConstructorInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

_ConstructorInfo.GetType()

Ottiene un oggetto Type che rappresenta il tipo ConstructorInfo.

_ConstructorInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

_ConstructorInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

_ConstructorInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

_ConstructorInfo.Invoke_2(Object, BindingFlags, Binder, Object[], CultureInfo)

Fornisce oggetti COM con accesso indipendente dalla versione al metodo Invoke(Object, BindingFlags, Binder, Object[], CultureInfo).

_ConstructorInfo.Invoke_3(Object, Object[])

Fornisce oggetti COM con accesso indipendente dalla versione al metodo Invoke(Object, Object[]).

_ConstructorInfo.Invoke_4(BindingFlags, Binder, Object[], CultureInfo)

Fornisce oggetti COM con accesso indipendente dalla versione al metodo Invoke(BindingFlags, Binder, Object[], CultureInfo).

_ConstructorInfo.Invoke_5(Object[])

Fornisce oggetti COM con accesso indipendente dalla versione al metodo Invoke(Object[]).

_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da MemberInfo)
_MemberInfo.GetType()

Ottiene un oggetto Type che rappresenta la classe MemberInfo.

(Ereditato da MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da MemberInfo)
_MethodBase.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.

(Ereditato da MethodBase)
_MethodBase.GetType()

Per una descrizione di questo membro, vedere GetType().

(Ereditato da MethodBase)
_MethodBase.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

(Ereditato da MethodBase)
_MethodBase.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

(Ereditato da MethodBase)
_MethodBase.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.

(Ereditato da MethodBase)
_MethodBase.IsAbstract

Per una descrizione di questo membro, vedere IsAbstract.

(Ereditato da MethodBase)
_MethodBase.IsAssembly

Per una descrizione di questo membro, vedere IsAssembly.

(Ereditato da MethodBase)
_MethodBase.IsConstructor

Per una descrizione di questo membro, vedere IsConstructor.

(Ereditato da MethodBase)
_MethodBase.IsFamily

Per una descrizione di questo membro, vedere IsFamily.

(Ereditato da MethodBase)
_MethodBase.IsFamilyAndAssembly

Per una descrizione di questo membro, vedere IsFamilyAndAssembly.

(Ereditato da MethodBase)
_MethodBase.IsFamilyOrAssembly

Per una descrizione di questo membro, vedere IsFamilyOrAssembly.

(Ereditato da MethodBase)
_MethodBase.IsFinal

Per una descrizione di questo membro, vedere IsFinal.

(Ereditato da MethodBase)
_MethodBase.IsHideBySig

Per una descrizione di questo membro, vedere IsHideBySig.

(Ereditato da MethodBase)
_MethodBase.IsPrivate

Per una descrizione di questo membro, vedere IsPrivate.

(Ereditato da MethodBase)
_MethodBase.IsPublic

Per una descrizione di questo membro, vedere IsPublic.

(Ereditato da MethodBase)
_MethodBase.IsSpecialName

Per una descrizione di questo membro, vedere IsSpecialName.

(Ereditato da MethodBase)
_MethodBase.IsStatic

Per una descrizione di questo membro, vedere IsStatic.

(Ereditato da MethodBase)
_MethodBase.IsVirtual

Per una descrizione di questo membro, vedere IsVirtual.

(Ereditato da MethodBase)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

Restituisce una matrice di tutti gli attributi personalizzati definiti in questo membro, esclusi gli attributi denominati, oppure una matrice vuota se non sono presenti attributi personalizzati.

(Ereditato da MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

Restituisce una matrice di attributi personalizzati definiti in questo membro, identificati dal tipo o da una matrice vuota, se non sono presenti attributi personalizzati di quel tipo.

(Ereditato da MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

Indica se per questo membro sono definite una o più istanze di attributeType.

(Ereditato da MemberInfo)

Metodi di estensione

GetCustomAttribute(MemberInfo, Type)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.

GetCustomAttribute(MemberInfo, Type, Boolean)

Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e verifica facoltativamente i predecessori di tale membro.

GetCustomAttribute<T>(MemberInfo)

Recupera una attributo personalizzato di un tipo specificato che viene applicato a un membro specificato.

GetCustomAttribute<T>(MemberInfo, Boolean)

Recupera un attributo personalizzato di un tipo specificato che viene applicato a un membro specificato e verifica facoltativamente i predecessori di tale membro.

GetCustomAttributes(MemberInfo)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato.

GetCustomAttributes(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.

GetCustomAttributes(MemberInfo, Type)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.

GetCustomAttributes(MemberInfo, Type, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.

GetCustomAttributes<T>(MemberInfo)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato.

GetCustomAttributes<T>(MemberInfo, Boolean)

Recupera una raccolta di attributi personalizzati di un tipo specificato che vengono applicati a un membro specificato e verifica facoltativamente i predecessori di tale membro.

IsDefined(MemberInfo, Type)

Indica se vengono applicati attributi personalizzati del tipo specificato a un membro specificato.

IsDefined(MemberInfo, Type, Boolean)

Indica se gli attributi personalizzati di un tipo specificato vengono applicati a un membro specificato e, facoltativamente, ai relativi predecessori.

GetMetadataToken(MemberInfo)

Ottiene un token di metadati per il membro specificato, se disponibile.

HasMetadataToken(MemberInfo)

Restituisce un valore che indica se un token di metadati è disponibile per il membro specificato.

Si applica a

Thread safety

Questo tipo è thread-safe.