Lista de tipos (Visual Basic)Type List (Visual Basic)

Especifica el parámetros de tipo para un genérico elemento de programación.Specifies the type parameters for a generic programming element. Varios parámetros están separados por comas.Multiple parameters are separated by commas. Siguiente es la sintaxis para un parámetro de tipo.Following is the syntax for one type parameter.

SintaxisSyntax

[genericmodifier] typename [ As constraintlist ]

ElementosParts

TérminoTerm DefiniciónDefinition
genericmodifier Opcional.Optional. Puede usarse solo en interfaces y delegados genéricos.Can be used only in generic interfaces and delegates. Puede declarar un tipo covariante mediante el Out palabra clave o contravariante mediante la en palabra clave.You can declare a type covariant by using the Out keyword or contravariant by using the In keyword. Vea Covarianza y contravarianza.See Covariance and Contravariance.
typename Obligatorio.Required. Nombre del parámetro de tipo.Name of the type parameter. Se trata de un marcador de posición, reemplazarse por un tipo definido proporcionado por el argumento de tipo correspondiente.This is a placeholder, to be replaced by a defined type supplied by the corresponding type argument.
constraintlist Opcional.Optional. Lista de requisitos que restringe el tipo de datos que se puede proporcionar para typename.List of requirements that constrain the data type that can be supplied for typename. Si tiene varias restricciones, encierre entre llaves ({ }) y sepárelas con comas.If you have multiple constraints, enclose them in curly braces ({ }) and separate them with commas. Debe introducir la lista de restricciones con el como palabra clave.You must introduce the constraint list with the As keyword. Usa As una sola vez, al principio de la lista.You use As only once, at the beginning of the list.

ComentariosRemarks

Cada elemento de programación genérica debe tener al menos un parámetro de tipo.Every generic programming element must take at least one type parameter. 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.A type parameter is a placeholder for a specific type (a constructed element) that client code specifies when it creates an instance of the generic type. Puede definir una clase genérica, estructura, interfaz, procedimiento o delegado.You can define a generic class, structure, interface, procedure, or delegate.

Para obtener más información sobre cuándo se debe definir un tipo genérico, vea tipos genéricos en Visual Basic.For more information on when to define a generic type, see Generic Types in Visual Basic. Para obtener más información sobre los nombres de parámetro de tipo, consulte Declared Element Names.For more information on type parameter names, see Declared Element Names.

ReglasRules

  • Paréntesis.Parentheses. Si se proporciona una lista de parámetros de tipo, debe encerrarlo entre paréntesis y debe introducir la lista con el de palabra clave.If you supply a type parameter list, you must enclose it in parentheses, and you must introduce the list with the Of keyword. Usa Of una sola vez, al principio de la lista.You use Of only once, at the beginning of the list.

  • Restricciones.Constraints. Una lista de restricciones en un tipo de parámetro puede incluir los siguientes elementos en cualquier combinación:A list of constraints on a type parameter can include the following items in any combination:

    • Cualquier número de interfaces.Any number of interfaces. El tipo proporcionado debe implementar todas las interfaces en esta lista.The supplied type must implement every interface in this list.

    • A lo sumo una clase.At most one class. El tipo proporcionado debe heredar de esa clase.The supplied type must inherit from that class.

    • Palabra clave New.The New keyword. El tipo proporcionado debe exponer un constructor sin parámetros que puede tener acceso su tipo genérico.The supplied type must expose a parameterless constructor that your generic type can access. Esto es útil si restringe un parámetro de tipo por una o varias interfaces.This is useful if you constrain a type parameter by one or more interfaces. Un tipo que implementa las interfaces no necesariamente exponer un constructor, y según el nivel de acceso de un constructor, el código dentro del tipo genérico es posible que no pueda obtener acceso a él.A type that implements interfaces does not necessarily expose a constructor, and depending on the access level of a constructor, the code within the generic type might not be able to access it.

    • Ya sea el Class palabra clave o el Structure palabra clave.Either the Class keyword or the Structure keyword. El Class palabra clave restringe un parámetro de tipo genérico para exigir que cualquier argumento de tipo pasado a la ser un tipo de referencia, por ejemplo una cadena, matriz o delegado, o crea un objeto de una clase.The Class keyword constrains a generic type parameter to require that any type argument passed to it be a reference type, for example a string, array, or delegate, or an object created from a class. El Structure palabra clave restringe un parámetro de tipo genérico para exigir que cualquier argumento de tipo pasado a la sea un tipo de valor, por ejemplo, una estructura, enumeración o datos elementales escriba.The Structure keyword constrains a generic type parameter to require that any type argument passed to it be a value type, for example a structure, enumeration, or elementary data type. No se puede incluir tanto Class y Structure en el mismo constraintlist.You cannot include both Class and Structure in the same constraintlist.

    El tipo proporcionado debe cumplir cada requisito que se incluya en constraintlist.The supplied type must satisfy every requirement you include in constraintlist.

    Las restricciones de cada parámetro de tipo son independientes de las restricciones de otros tipos de parámetros.Constraints on each type parameter are independent of constraints on other type parameters.

ComportamientoBehavior

  • Sustitución de tiempo de compilación.Compile-Time Substitution. Cuando se crea un tipo construido desde un elemento de programación genérico, proporcione un tipo definido para cada parámetro de tipo.When you create a constructed type from a generic programming element, you supply a defined type for each type parameter. El compilador de Visual Basic sustituye el tipo proporcionado para todas las apariciones de typename dentro del elemento genérico.The Visual Basic compiler substitutes that supplied type for every occurrence of typename within the generic element.

  • Ausencia de restricciones.Absence of Constraints. Si no especifica ninguna restricción en un parámetro de tipo, el código se limita a las operaciones y miembros compatibles con el Object Data Type para ese parámetro de tipo.If you do not specify any constraints on a type parameter, your code is limited to the operations and members supported by the Object Data Type for that type parameter.

EjemploExample

El ejemplo siguiente muestra un esquema de definición de una clase de diccionario genérico, incluida una función de esqueleto para agregar una nueva entrada al diccionario.The following example shows a skeleton definition of a generic dictionary class, including a skeleton function to add a new entry to the dictionary.

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

EjemploExample

Dado que dictionary es genérico, el código que lo usa puede crear una variedad de objetos, cada uno tiene la misma funcionalidad pero que actúan en un tipo de datos diferente.Because dictionary is generic, the code that uses it can create a variety of objects from it, each having the same functionality but acting on a different data type. El ejemplo siguiente muestra una línea de código que crea un dictionary objeto con String entradas y Integer claves.The following example shows a line of code that creates a dictionary object with String entries and Integer keys.

Dim dictInt As New dictionary(Of String, Integer)

EjemploExample

El ejemplo siguiente muestra la definición de esqueleto equivalente generada por el ejemplo anterior.The following example shows the equivalent skeleton definition generated by the preceding example.

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énSee also