Condividi tramite


Elenco dei tipi

Aggiornamento: novembre 2007

Specifica i parametri di tipo per un elemento di programmazione generico. I vari parametri sono separati da virgole. Di seguito è riportata la sintassi di un parametro di tipo.

typename [ As constraintlist ]

Parti

  • typename
    Obbligatoria. Nome del parametro di tipo. Si tratta di un segnaposto da sostituire con un tipo definito specificato dall'argomento di tipo corrispondente.

  • constraintlist
    Facoltativa. Elenco di requisiti che vincolano il tipo di dati che è possibile specificare per typename. In presenza di più vincoli è possibile racchiuderli tra parentesi graffe ({ }) e separarli con virgole. L'elenco dei vincoli deve essere introdotto dalla parola chiave As. As viene utilizzata una sola volta all'inizio dell'elenco.

Note

Ogni elemento di programmazione generico deve accettare almeno un parametro di tipo. Tale parametro è un segnaposto per uno specifico tipo, ossia un elemento costruito, specificato dal codice client al momento della creazione di un'istanza del tipo generico. È possibile definire una classe, una struttura, un'interfaccia, una routine o un delegato generico.

Per ulteriori informazioni sul momento in cui definire un tipo generico, vedere Tipi generici in Visual Basic. Per ulteriori informazioni sui nomi dei parametri di tipo, vedere Nomi di elementi dichiarati.

Regole

  • Parentesi. Se si specifica un elenco di parametri di tipo, è necessario racchiuderlo tra parentesi e inserire all'inizio la parola chiave Of. Of viene utilizzata una sola volta all'inizio dell'elenco.

  • Vincoli. Un elenco di vincoli definiti su un parametro di tipo può includere qualsiasi combinazione dei seguenti elementi:

    • Un numero qualsiasi di interfacce. Il tipo specificato deve implementare ogni interfaccia dell'elenco.

    • Al massimo una classe. Il tipo specificato deve ereditare da tale classe.

    • La parola chiave New (Visual Basic). Il tipo specificato deve esporre un costruttore senza parametri a cui possa accedere il tipo generico. Questa caratteristica risulta utile se si vincola un parametro di tipo tramite una o più interfacce. Un tipo che implementa interfacce non espone necessariamente un costruttore. A seconda del livello di accesso del costruttore, è pertanto possibile che il codice all'interno del tipo generico non sia in grado di accedere a tale costruttore.

    • La parola chiave Class (Visual Basic) o Structure (Visual Basic). Se si include Class, il tipo specificato deve essere un tipo di riferimento. Se si include Structure, il tipo specificato deve essere un tipo di valore. Non è possibile includere Class e Structure nella stessa parte constraintlist.

    Il tipo specificato deve soddisfare tutti i requisiti inclusi in constraintlist.

    I vincoli definiti su ciascun parametro di tipo sono indipendenti da quelli definiti sugli altri parametri di tipo.

Comportamento

  • Sostituzione in fase di compilazione. Quando si crea un tipo costruito da un elemento di programmazione generico, viene specificato un tipo definito per ciascun parametro di tipo. Il compilatore Visual Basic sostituisce il tipo specificato per ogni ricorrenza di typename all'interno dell'elemento generico.

  • Assenza di vincoli. Se non si specifica alcun vincolo su un parametro di tipo, il codice è limitato alle operazioni e ai membri supportati dal Tipo di dati Object per tale parametro.

Esempio

Nell'esempio riportato di seguito viene illustrata la definizione di base di una classe dizionario generica, che comprende una funzione di base per l'aggiunta di una nuova voce al dizionario.

Public Class dictionary(Of entryType, keyType As {IComparable, IFormattable, New})
    Public Sub add(ByVal et As entryType, ByVal kt As keyType)
        Dim dk As keyType
        If kt.CompareTo(dk) = 0 Then
        End If
    End Sub
End Class

Poiché dictionary è generico, il codice che lo utilizza può creare a partire da tale elemento una vasta gamma di oggetti, ciascuno con le stesse funzionalità ma con effetto su tipi di dati diversi. Nell'esempio riportato di seguito viene illustrata una riga di codice che crea un oggetto dictionary con voci String e chiavi Integer.

Dim dictInt As New dictionary(Of String, Integer)

Nell'esempio riportato di seguito viene illustrata la definizione di base equivalente generata dall'esempio precedente.

Public Class dictionary
    Public Sub add(ByVal et As String, ByVal kt As Integer)
        Dim dk As Integer
        If kt.CompareTo(dk) = 0 Then
        End If
    End Sub
End Class

Vedere anche

Attività

Procedura: utilizzare una classe generica

Concetti

Livelli di accesso in Visual Basic

Riferimenti

Of

New (Visual Basic)

Class (Visual Basic)

Structure (Visual Basic)

Tipo di dati Object

Istruzione Function (Visual Basic)

Istruzione Structure

Istruzione Sub (Visual Basic)