Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 covariante de tipo mediante la palabra clave Out o contravariante mediante la palabra clave In . Vea Covarianza y contravarianza. |
typename |
Obligatorio. 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 separe con comas. Debe introducir la lista de restricciones con la palabra clave As . Solo se usa As una vez, al principio de la lista. |
Observaciones
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ámetros 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 usa
Ofuna 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
Classpalabra clave o laStructurepalabra clave . LaClasspalabra clave restringe un parámetro de tipo genérico para requerir que cualquier argumento de tipo pasado a él sea un tipo de referencia, por ejemplo, una cadena, una matriz o un delegado, o un objeto creado a partir de una clase. LaStructurepalabra 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, enumeración o tipo de datos elemental. No se pueden incluir yClassStructureen el mismoconstraintlist.
El tipo proporcionado debe cumplir todos los requisitos que incluya en
constraintlist.Las restricciones de cada parámetro de tipo son independientes de las restricciones en otros parámetros de tipo.
Comportamiento
Compile-Time sustitución. Al crear 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 compilador de Visual Basic sustituye el tipo proporcionado por cada aparición del
typenameelemento 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 miembros admitidos por el tipo de datos de objeto 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érica, 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 dictionary 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 en un tipo de datos diferente. En el ejemplo siguiente se muestra una línea de código que crea un dictionary objeto con String entradas y 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