Lista de tipos
Actualización: noviembre 2007
Especifica los parámetros de tipo para un elemento de programación genérico. Los parámetros múltiples se separan por comas. A continuación, aparece la sintaxis para un parámetro de tipo.
typename [ As constraintlist ]
Partes
typename
Obligatorio. Nombre del parámetro de tipo. Éste es un marcador de posición, que debe ser reemplazado por un tipo definido proporcionado por el argumento de tipo correspondiente.constraintlist
Opcional. Lista de requisitos que restringe el tipo de datos que se puede proporcionar para typename. Si tiene varias restricciones, inclúyalas entre llaves ({ }) y sepárelas por comas. Debe introducir la lista de restricciones con la palabra clave As. Sólo se utiliza As una vez, al principio de la lista.
Comentarios
Cada elemento de programación genérico debe aceptar por lo 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 de tipo genérico.
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 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 e introducir la lista con la palabra clave Of. Sólo se utiliza Of una vez, al principio de la lista.
Restricciones. Una lista de restricciones de un parámetro de tipo puede incluir los elementos siguientes en cualquier combinación:
Cualquier número de interfaces. El tipo proporcionado debe implementar todas las interfaces en esta lista.
A lo sumo una clase. El tipo proporcionado debe heredar de esa clase.
Palabra clave New (Visual Basic). El tipo proporcionado debe exponer un constructor sin parámetros al que el tipo genérico pueda tener acceso. Esto es útil si restringe un parámetro de tipo a 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 dentro del tipo genérico no pueda tener acceso a él.
Palabra clave Class (Visual Basic) o Structure (Visual Basic). Si incluye Class, el tipo proporcionado debe ser un tipo de referencia. Si incluye Structure, el tipo proporcionado debe ser un tipo de valor. No es posible incluir Class y Structure en la misma constraintlist.
El tipo proporcionado debe satisfacer cada requisito que se 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 crea un tipo construido a partir de un elemento de programación genérico, proporciona un tipo definido para cada parámetro de tipo. El compilador de Visual Basic sustituye cada aparición de typename por el tipo proporcionado dentro del elemento genérico.
Ausencia de restricciones. Si no especifica ninguna restricción en un parámetro de tipo, el código está limitado a las operaciones y los miembros admitidos por Object (Tipo de datos) para este parámetro de tipo.
Ejemplo
En el ejemplo siguiente se muestra un esquema de definición de una clase de diccionario genérico, incluido un esquema de función 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
Como dictionary es genérico, el código que lo utiliza puede crear una variedad de objetos a partir de él, cada uno de los cuales tiene la misma funcionalidad pero que actúa en un tipo de datos diferente. En el ejemplo siguiente se muestra una línea de código que crea un objeto dictionary con entradas String y claves Integer.
Dim dictInt As New dictionary(Of String, Integer)
En el ejemplo siguiente se muestra el esquema de definición equivalente generado 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
Vea también
Tareas
Cómo: Utilizar una clase genérica
Conceptos
Niveles de acceso en Visual Basic