Lista de tipos (Visual Basic)
Especifica los parámetros de tipo para un elemento de programación genérico. Varios parámetros están separados por comas. A continuación se muestra la sintaxis de un parámetro de tipo.
Sintaxis
[genericmodifier] typename [ As constraintlist ]
Partes
| Término | Definición |
|---|---|
genericmodifier |
Opcional. Solo se puede usar en interfaces y delegados genéricos. Puede declarar un tipo covariante mediante la palabra clave Out o contravariante mediante la palabra clave In. Vea Covarianza y contravarianza. |
typename |
Necesario. Nombre del parámetro de tipo. Se trata de un marcador de posición que se va a reemplazar por un tipo definido proporcionado por el argumento de tipo correspondiente. |
constraintlist |
Opcional. Lista de requisitos que restringen el tipo de datos que se puede proporcionar para typename . Si tiene varias restricciones, escríbalas entre llaves ( ) y { } separelas con comas. Debe introducir la lista de restricciones con la palabra clave As. Solo se As usa una vez, al principio de la lista. |
Comentarios
Cada elemento de programación genérico debe tomar al menos un parámetro de tipo. Un parámetro de tipo es un marcador de posición para un tipo específico (un elemento construido ) que el código de cliente especifica cuando crea una instancia del tipo genérico. Puede definir una clase, estructura, interfaz, procedimiento o delegado genéricos.
Para obtener más información sobre cuándo definir un tipo genérico, vea Tipos genéricos en Visual Basic. Para obtener más información sobre los nombres de parámetro de tipo, vea Nombres de elementos declarados.
Reglas
Paréntesis. Si proporciona una lista de parámetros de tipo, debe incluirla entre paréntesis y debe introducir la lista con la palabra clave Of. Solo se
Ofusa una vez, al principio de la lista.Restricciones. Una lista de restricciones en un parámetro de tipo puede incluir los siguientes elementos en cualquier combinación:
Cualquier número de interfaces. El tipo proporcionado debe implementar todas las interfaces de esta lista.
Como máximo una clase. El tipo proporcionado debe heredar de esa clase.
La palabra clave
New. El tipo proporcionado debe exponer un constructor sin parámetros al que pueda tener acceso el tipo genérico. Esto resulta útil si restringe un parámetro de tipo por una o varias interfaces. Un tipo que implementa interfaces no expone necesariamente un constructor y, en función del nivel de acceso de un constructor, es posible que el código del tipo genérico no pueda acceder a él.La palabra
Classclave o la palabra claveStructure. La palabra clave restringe un parámetro de tipo genérico para requerir que cualquier argumento de tipo que se le pase sea un tipo de referencia, por ejemplo, una cadena, una matriz o un delegado, o un objeto creado a partir deClassuna clase. La palabra clave restringe un parámetro de tipo genérico para requerir que cualquier argumento de tipo que se le pase sea un tipo de valor, por ejemplo, una estructura, una enumeración o un tipoStructurede datos básico. No puede incluir yClassStructureen el mismoconstraintlist.
El tipo proporcionado debe satisfacer todos los requisitos que incluya en
constraintlist.Las restricciones de cada parámetro de tipo son independientes de las restricciones de otros parámetros de tipo.
Comportamiento
Sustitución en tiempo de compilación. Cuando se crea un tipo construido a partir de un elemento de programación genérico, se proporciona un tipo definido para cada parámetro de tipo. El Visual Basic compilador sustituye a ese tipo proporcionado por cada aparición de
typenamedentro del elemento genérico.Ausencia de restricciones. Si no especifica ninguna restricción en un parámetro de tipo, el código se limita a las operaciones y los miembros admitidos por object data type para ese parámetro de tipo.
Ejemplo 1
En el ejemplo siguiente se muestra una definición de esqueleto de una clase de diccionario genérico, incluida una función de esqueleto para agregar una nueva entrada al diccionario.
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
Ejemplo 2
Dado que es genérico, el código que lo usa puede crear una variedad de objetos a partir de él, cada uno con la misma funcionalidad, pero actuando dictionary sobre un tipo de datos diferente. En el ejemplo siguiente se muestra una línea de código que crea un dictionary objeto con entradas y String Integer claves.
Dim dictInt As New dictionary(Of String, Integer)
Ejemplo 3
En el ejemplo siguiente se muestra la definición de esqueleto equivalente generada por el ejemplo anterior.
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