Solução de problemas de coleções

Esta página lista somente problemas comuns que podem ocorrer quando se trabalha com coleções.

Usando o tipo errado de coleção

Há vários tipos de coleções disponível para um Visual Basic desenvolvedor: the Visual Basic Collection class and the collection classes furnished by the .NET Framework.Estas classes não são compatíveis entre si.Isso significa que se você declara uma variável para ser de um tipo de coleção, você não pode assinalar um objeto de outro tipo para aquela variável.Além disso, você pode acessar apenas os métodos e propriedades do tipo de coleção que você declarou.

As principais diferenças entre as classes de coleção do Visual Basic e .NET Framework incluem o seguinte:

  • Índice Base. As coleções .NET Framework são de base zero, euquanto a coleção Visual Basic é de base um.Isso significa que os elementos de uma coleção Visual Basic têm valores de índice de 1 até o valor da Propriedades de Contagem ( Objeto de coleção).,enquanto os elementos de uma coleção .NET Framework têm valores de índice de 0 até 1 a menos do valor da propriedade da coleção Count.

  • **Tipo de Elemento.**A coleção Visual Basic suporta elementos do tipo Object, que não é type-safe porque você adicionar um elemento de qualquer tipo de dado.Isto geralmente resulta numa performance menor porque o compilador deve encapsular e desencapsular os elementos para convertê-los e desconvertê-los para Tipo de dados Object.Algumas das coleções .NET Framework também possuem elementos do tipo Object, mas muitas outras são fortemente tipadas, significando que dão suporte a elementos de um tipo específico, o que as torna type-safe e geralmente resultam numa performance ótima.

  • **Elementos fechados.**A coleção Visual Basic permite que você especifique uma chave quando você adiciona um elemento nela.A chave é uma Stringúnica que você pode usar depois para acessar aquele elemento em particular.As coleções .NET Framework variam de acordo com as chaves.Algumas suportam chaves e outras não.

Os namespaces que contém as variadas definições das classes de coleções são os seguintes:

  • Microsoft.VisualBasic - a classe de coleção Visual Basic Collection

  • System.Collections - classes de coleções específicas como listas, filas, vetores de bits, tabelas hash e dicionários.

  • System.Collections.Generic - classes de coleções genéricas, que permitem que você crie coleções fortemente tipadas e especifique o tipo de dados do elemento quando você as cria.

  • System.Collections.Specialized - classes especializadas e fortemente tipadas, como listas encadeadas e dicionários híbridos, vetores de bits e coleções de nomes de objetos e coleções apenas de strings.

Abordagem Correta

Você deve determinar qual o tipo de coleção é mais adequado às suas necessidades.Declare sua variável de coleção para ser daquele tipo, e crie um objeto do mesmo tipo.Use restrição total para assegurar que você está especificando o tipo de coleção que você queria.O seguinte exemplo mostra duas declarações com restrição total.

Dim customers As New Microsoft.VisualBasic.Collection()
Dim stringQueue As New System.Collections.Generic.Queue(Of String)

A partir do momento que você criou uma coleção de um tipo específico, garanta que você use apenas métodos e propriedades definidos naquele tipo.Defina Option Strict On para captar quaisquer atribuições incorretas de objetos ou acessos a membros em tempo de compilação.

Consulte também

Conceitos

Coleções em Visual Basic

Coleção de Classes do Visual Basic

Referência

Opção declaração estrito