Como: Definir conjuntos de fortemente tipado

Você pode definir e criar uma coleção usando a classe Collection fornecida pelo Visual Basic, como mostra o exemplo a seguir.

Public Class widgetRepository
    Public widgetColl As New Microsoft.VisualBasic.Collection()
    ' Insert code to implement additional functionality.
End Class

No entanto, essa coleção widgetColl não tem muitos tipos.Você pode adicionar qualquer tipo de elemento a ela, não apenas objetos widget.Quando você recupera um elemento, talvez seja necessário tentar convertê-lo em um widget.Isso pode levar a problemas de segurança de tipo.Por exemplo, suponha que você adicione um String à coleção usando o código a seguir.

Dim notWidget As String = "This is not a widget object!"
widgetColl.Add(notWidget)

Se você fizer isso, qualquer tentativa subsequente para recuperar esse elemento gera uma exceção ArgumentException em tempo de execução porque o elemento da coleção não é do tipo widget.

Protegendo Contra Problemas de Segurança de Tipo

Recomendamos que você maximize a segurança de tipo definindo uma classe genérica.Isso impõe de alta segurança de tipos e também fornece flexibilidade no tipo de dados particular com o qual se trabalha.Para obter mais informações, consulte Tipos genéricos no Visual Basic.

Para definir uma coleção de segurança de tipos em uma classe

  • Use um das classes genéricas no namespace System.Collections.Generic, por exemplo, List<T> para sua classe coleção.Em seguida, você pode criar uma coleção que é restrita a membros widget.O exemplo a seguir ilustra como a declaração no exemplo anterior pode ser modificada para criar uma coleção genérica.

    Public widgetColl As New System.Collections.Generic.List(Of widget)
    

    Quando você fizer isso, a alta segurança de tipos permite que você adicione somente os itens widget à coleção, e que cada elemento que você recupera através da propriedade Item seja um objeto widget.Também devido à esta alta segurança de tipos, o código de recuperação pode usar todos as propriedades e métodos expostos por widget.

    - ou -

  • Crie sua própria coleção classe sem usar as classes predefinidas.Restrinja o método Add para aceitar somente os objetos widget e implementar sua propriedade Item com um tipo de retorno de widget.Para obter mais informações, consulte Como: Definir conjuntos de fortemente tipado.

    Se Item retornou elementos do tipo Object, você teria acesso explícito somente às propriedades e métodos definidos na classe Object.Para acessar os membros widget, você precisará ativar Option Strict Off ou usar o CType Function para explicitamente converter o elemento retornado para widget, como no código a seguir.

    Dim nextWidget As widget
    Try
        nextWidget = CType(widgetColl.Item(1), widget)
    Catch ex As Exception
        ' Insert code to run if the collection item is not a widget.
    End Try
    

    Em ambos os casos, usar elementos Object nessa maneira faz com que Visual Basic empregue vinculação atrasada , que degrada sua performance.

    Observe que a classe Visual Basic Collection aceita e retorna elementos Object, para que ele tenha as desvantagens de baixa segurança de tipos e vinculação tardia.

Consulte também

Conceitos

Coleção de Classes do Visual Basic

Coleções em Visual Basic

Tipos genéricos no Visual Basic

Referência

System.Collections

System.Collections.Generic

System.Collections.Specialized

Opção declaração estrito