![]() |
Você esta precisando copiar o conteúdo de uma coleção para um Array ? Veja como fazer isso neste tutorial... |
![]() |
O método
ICollection.CopyTo e o método ToArray
executam aproximadamente a mesma função: eles fazem uma
cópia dos elementos contidos em uma coleção para um
array.
Ambos os métodos realizam apenas uma cópia superficial,
o que significa que os dados na memória são simplesmente
copiados de um local para outro em vez do método de
cópia do objecto de destino a ser chamado, que é
referido como uma cópia profunda.
A principal diferença é que CopyTo copia os
elementos da coleção para um array existente, enquanto
ToArray cria um novo array antes de copiar os
elementos da coleção para ela.
O método CopyTo usa dois argumentos:
um array e um índice.
O array é o alvo da operação de cópia e deve ser
de um tipo apropriado para manipular os elementos da
coleção. Se os tipos não coincidirem, ou nenhuma
conversão implícita for possível a partir do tipo do
elemento da coleção para o tipo do elmento do array, uma
exceção
System.InvalidCastException será lançada.
O índice é o elemento inicial da matriz onde os
elementos da coleção serão copiados. Se o índice for
igual ou maior que o comprimento da matriz, ou o número
de elementos da coleção exceder a capacidade da matriz,
uma exceção
System.ArgumentException será lançada.
Recursos Usados:
Criando o projeto no VS Community 2017
Abra no VS community 2017 e no menu File clique em New Project;
A seguir selecione o template Visual Basic -> Windows -> Console Application e informe o nome Vbn_Collection_Array e clique em OK;
Module Module1
Sub Main()
' cria e inicializa um ArrayList que é a nossa fonte de dados origem
Dim ColecaoOrigem As New ArrayList()
ColecaoOrigem.Add("Palmeiras")
ColecaoOrigem.Add("Santos")
ColecaoOrigem.Add("São Paulo")
ColecaoOrigem.Add("Corinthians")
ColecaoOrigem.Add("Ponte Preta")
ColecaoOrigem.Add("Portuguesa")
' Cria e inicializa um array de uma dimensão onde vamos copiar os dados
Dim ArrayDestino(14) As String
ArrayDestino(0) = "Vasco"
ArrayDestino(1) = "Flamengo"
ArrayDestino(2) = "Fluminense"
ArrayDestino(3) = "Botafogo"
ArrayDestino(4) = "Madureira"
ArrayDestino(5) = "Bangu"
ArrayDestino(6) = "Volta Redonda"
ArrayDestino(7) = "BoaVista"
' Exibe os valores do Array destino
Console.WriteLine("O Array Destino contém os seguintes elementos :")
ImprimirValores(ArrayDestino, " "c)
' Copia o segundo elemento do coleção fonte para o array de destino inciando no indice 7
ColecaoOrigem.CopyTo(1, ArrayDestino, 7, 1)
' Exibe os valores do array destino
ImprimirValores(ArrayDestino, " "c)
' Copia a coleção inteira para o array de destino iniciando no indice 6
ColecaoOrigem.CopyTo(ArrayDestino, 6)
' Exibe os valores do array Destino
ImprimirValores(ArrayDestino, " "c)
' Copia a coleção inteira para o array de destino iniciando no indice 0
ColecaoOrigem.CopyTo(ArrayDestino)
' Exibe os valores do array destino
ImprimirValores(ArrayDestino, " "c)
Console.ReadKey()
End Sub
Public Sub ImprimirValores(meuArray() As String, Separador As Char)
Dim i As Integer
For i = 0 To meuArray.Length - 1
Console.Write("{0}{1}", Separador, meuArray(i))
Next i
Console.WriteLine()
End Sub
End Module
|
Executando o projeto teremos o resultado a seguir:
Os elmentos destacados são os elementos que foram copiados da coleção origem para o array de destino.
Vamos entender o código:
1 - ColecaoOrigem.CopyTo(1,
ArrayDestino, 7, 1) - Copia o segundo elemento do coleção fonte -
ColecaoOrigem - para o array de destino - ArrayDestino -
inciando no indice 7
2 - ColecaoOrigem.CopyTo(ArrayDestino,
6) - Copia a coleção de origem inteira para o array de destino iniciando
no indice 6;
3 - ColecaoOrigem.CopyTo(ArrayDestino) - Copia a coleção de origem inteira para o array de destino iniciando no indice 0;
Destancao que :
1 - O valor do índice de um array é baseado em
zero. Assim o índice zero indica o primeiro elemento;
2 - O array de destino deve ser de um tipo compatível;
3 - Os elmentos são copiados para o array de destino na mesma ordem na qual o
enumerador iterage sobre a coleção de origem;
Para concluir vejamos mais um exemplo usando o método CopyTo() , desta vez usando uma coleção List(Of T).
Module Module1
Sub Main()
' Cria uma lista com 3 elementos
Dim lista = New List(Of Integer)() From {5555, 666, 7777}
' Cria um array com tamanho igual a 3
Dim array As Integer() = New Integer(lista.Count - 1) {}
' Copia a lista inteira para o array a partir do índice zero
lista.CopyTo(array)
'Exibe os valores
Dim i As Integer
For i = 0 To array.Length - 1
Console.Write("{0}{1}", " ", array(i))
Next i
Console.ReadKey()
End Sub
End Module
|
![]() |
Pegue o projeto completo neste link :
Vbn_Collection_Array.zip
1 Todo aquele que crê
que Jesus é o Cristo, é nascido de Deus; e todo aquele que ama ao que o gerou
também ama ao que dele é nascido. 2 Nisto conhecemos que amamos os filhos de
Deus, quando amamos a Deus e guardamos os seus mandamentos.
1 João 5:1,2
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - DataGridView - Selecionando e exibindo registros - Macoratti
C# - DataGridView - Salvando o conteúdo e realizando ... - Macoratti