Visual Basic .NET Language
Generics
Ricerca…
Crea una classe generica
Viene creato un tipo generico per adattarsi in modo che la stessa funzionalità possa essere accessibile per diversi tipi di dati.
Public Class SomeClass(Of T)
Public Sub doSomething(newItem As T)
Dim tempItem As T
' Insert code that processes an item of data type t.
End Sub
End Class
Istanza di una classe generica
Creando un'istanza della stessa classe con un tipo diverso, l'interfaccia della classe cambia a seconda del tipo specificato.
Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)
Definire una classe 'generica'
Una classe generica è una classe che si adatta a un tipo successivo in modo che la stessa funzionalità possa essere offerta a tipi diversi.
In questo esempio di base viene creata una classe generica. Ha un sottotitolo che usa il tipo generico T. Durante la programmazione di questa classe, non conosciamo il tipo di T. In questo caso T ha tutte le caratteristiche dell'oggetto.
Public Class SomeClass(Of T)
Public Sub doSomething(newItem As T)
Dim tempItem As T
' Insert code that processes an item of data type t.
End Sub
End Class
Utilizzare una classe generica
In questo esempio sono state create 2 istanze della classe SomeClass. A seconda del tipo dato le 2 istanze hanno un'interfaccia diversa:
Dim theStringClass As New SomeClass(Of String)
Dim theIntegerClass As New SomeClass(Of Integer)
La classe generica più famosa è Lista (di)
Limita i tipi possibili dati
I tipi possibili passati a una nuova istanza di SomeClass devono ereditare SomeBaseClass. Questa può anche essere un'interfaccia. Le caratteristiche di SomeBaseClass sono accessibili all'interno di questa definizione di classe.
Public Class SomeClass(Of T As SomeBaseClass)
Public Sub DoSomething(newItem As T)
newItem.DoSomethingElse()
' Insert code that processes an item of data type t.
End Sub
End Class
Public Class SomeBaseClass
Public Sub DoSomethingElse()
End Sub
End Class
Crea una nuova istanza del tipo specificato
La creazione di una nuova intanza di un tipo generico può essere eseguita / checed in fase di compilazione.
Public Class SomeClass(Of T As {New})
Public Function GetInstance() As T
Return New T
End Function
End Class
O con tipi limitati:
Public Class SomeClass(Of T As {New, SomeBaseClass})
Public Function GetInstance() As T
Return New T
End Function
End Class
Public Class SomeBaseClass
End Class
La baseClass (se non è stata assegnata alcuna Object) deve avere un parametro meno costruttore.
Questo può essere fatto anche in fase di esecuzione attraverso la riflessione