Compartilhar via


Lista de tipos (Visual Basic)

Especifica os parâmetros de tipo para um elemento de programação genérico . Vários parâmetros são separados por vírgulas. A seguir está a sintaxe de um parâmetro de tipo.

Sintaxe

[genericmodifier] typename [ As constraintlist ]

Partes

Prazo Definição
genericmodifier Opcional. Pode ser usado somente em interfaces genéricas e delegados. Você pode declarar um tipo covariante usando a palavra-chave Out ou contravariante usando a palavra-chave In . Consulte Covariância e Contravariância.
typename Obrigatório Nome do parâmetro de tipo. Esse é um espaço reservado, a ser substituído por um tipo definido fornecido pelo argumento de tipo correspondente.
constraintlist Opcional. Lista de requisitos que restringem o tipo de dados que pode ser fornecido para typename. Se você tiver várias restrições, coloque-as entre chaves ({ }) e separe-as com vírgulas. Você deve introduzir a lista de restrições com a palavra-chave Como . Você usa As apenas uma vez, no início da lista.

Observações

Cada elemento de programação genérico deve usar pelo menos um parâmetro de tipo. Um parâmetro de tipo é um espaço reservado para um tipo específico (um elemento construído) que o código do cliente especifica quando cria uma instância do tipo genérico. Você pode definir uma classe genérica, estrutura, interface, procedimento ou delegado.

Para obter mais informações sobre quando definir um tipo genérico, consulte Tipos Genéricos no Visual Basic. Para obter mais informações sobre nomes de parâmetro de tipo, consulte Nomes de Elementos Declarados.

Regras

  • Parênteses. Se você fornecer uma lista de parâmetros de tipo, deverá colocá-la entre parênteses e deverá introduzir a lista com a palavra-chave Of . Você usa Of apenas uma vez, no início da lista.

  • Restrições. Uma lista de restrições em um parâmetro de tipo pode incluir os seguintes itens em qualquer combinação:

    • Qualquer número de interfaces. O tipo fornecido deve implementar todas as interfaces nesta lista.

    • No máximo uma classe. O tipo fornecido deve herdar dessa classe.

    • A palavra-chave New. O tipo fornecido deve expor um construtor sem parâmetros que seu tipo genérico pode acessar. Isso será útil se você restringir um parâmetro de tipo por uma ou mais interfaces. Um tipo que implementa interfaces não expõe necessariamente um construtor e, dependendo do nível de acesso de um construtor, o código dentro do tipo genérico pode não ser capaz de acessá-lo.

    • Class A palavra-chave ou a Structure palavra-chave. A Class palavra-chave restringe um parâmetro de tipo genérico para exigir que qualquer argumento de tipo passado para ele seja um tipo de referência, por exemplo, uma cadeia de caracteres, uma matriz ou um delegado ou um objeto criado a partir de uma classe. A Structure palavra-chave restringe um parâmetro de tipo genérico para exigir que qualquer argumento de tipo passado para ele seja um tipo de valor, por exemplo, uma estrutura, enumeração ou tipo de dados elementar. Você não pode incluir ambos Class e Structure no mesmo constraintlist.

    O tipo fornecido deve atender a todos os requisitos que você incluir.constraintlist

    As restrições em cada parâmetro de tipo são independentes de restrições em outros parâmetros de tipo.

Comportamento

  • Substituição Compile-Time. Ao criar um tipo construído a partir de um elemento de programação genérico, você fornece um tipo definido para cada parâmetro de tipo. O compilador do Visual Basic substitui o tipo fornecido para cada ocorrência do typename elemento genérico.

  • Ausência de restrições. Se você não especificar nenhuma restrição em um parâmetro de tipo, seu código será limitado às operações e membros compatíveis com o Tipo de Dados de Objeto para esse parâmetro de tipo.

Exemplo 1

O exemplo a seguir mostra uma definição de esqueleto de uma classe de dicionário genérica, incluindo uma função de esqueleto para adicionar uma nova entrada ao dicionário.

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

Exemplo 2

Como dictionary é genérico, o código que o usa pode criar uma variedade de objetos a partir dele, cada um com a mesma funcionalidade, mas agindo em um tipo de dados diferente. O exemplo a seguir mostra uma linha de código que cria um dictionary objeto com String entradas e Integer chaves.

Dim dictInt As New dictionary(Of String, Integer)

Exemplo 3

O exemplo a seguir mostra a definição de esqueleto equivalente gerada pelo exemplo 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

Consulte também