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
Tipos genéricos no Visual Basic