none
Consulta sobre listas RRS feed

  • Pregunta

  • Si tengo

    Dim lisDatos1 as New List (of Integer)

    Dim lisDatos2 as New List (of integer)

    y lleno lisDatos1 digamos con diez valores. Luego hago esta asignación:

    lisDatos2 = lisDatos1

    Con lo anterior estoy haciendo que lisDatos2 apunte a lisDatos1 noo? lo cual quiere decir que si modifico algo en lisDatos2 se reflejaría en lisDatos1?

    Si es así, cómo haría si quiero que lisDatos2 tenga los mismos datos que lisDatos1 pero que sean dos listas distintas, es decir que no dependan una de la otra, que no apunten a, o en otras palabras que no estén ligadas, que si borro o modifico algo en una no se borre o modifique igual en la otra.


    • Editado James2016-2 jueves, 3 de agosto de 2017 19:25
    jueves, 3 de agosto de 2017 19:25

Respuestas

  • Es lo mismo, recuerda que una estructura es un tipo de valor.

    Public Structure Test
    	Public A As Integer
    	Public B As Integer
    	Public C As String
    End Structure
    
    '-
    
    Dim Lista As New List(Of Test) From
    	{
    		New Test() With {.A = 1, .B = 10, .C = "Valor1"},
    		New Test() With {.A = 2, .B = 20, .C = "Valor2"}
    	}
    'Copiar elementos de Lista a Lista1
    Dim Lista1 As New List(Of Test)(lista)
    'Borrar el primer elemento de Lista1
    Lista1.Remove(lista1.FirstOrDefault())
    MessageBox.Show($"Cuenta lista: {Lista.Count} - Cuenta lista1: {Lista1.Count}")
    
     
    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    • Marcado como respuesta James2016-2 jueves, 3 de agosto de 2017 23:28
    jueves, 3 de agosto de 2017 21:38

Todas las respuestas

  • Si la lista es de un tipo de valor -que es el caso del ejemplo que propones- entonces es simple la manera como puedes copiar los elementos, no vale igualar las referencias.

    Dim lisDatos2 As New List(Of Integer)(lisDatos1)

    Claro, se entiende que 'lisDatos1' ya contiene los datos que deseas copiar.


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    jueves, 3 de agosto de 2017 19:48
  • En realidad los elementos de la lista que quiero obtener una copia consisten en una pequeña estructura con tres variables, un IntPtr y dos string cómo sería en ese caso.
    • Editado James2016-2 jueves, 3 de agosto de 2017 20:23
    jueves, 3 de agosto de 2017 20:23
  • Es lo mismo, recuerda que una estructura es un tipo de valor.

    Public Structure Test
    	Public A As Integer
    	Public B As Integer
    	Public C As String
    End Structure
    
    '-
    
    Dim Lista As New List(Of Test) From
    	{
    		New Test() With {.A = 1, .B = 10, .C = "Valor1"},
    		New Test() With {.A = 2, .B = 20, .C = "Valor2"}
    	}
    'Copiar elementos de Lista a Lista1
    Dim Lista1 As New List(Of Test)(lista)
    'Borrar el primer elemento de Lista1
    Lista1.Remove(lista1.FirstOrDefault())
    MessageBox.Show($"Cuenta lista: {Lista.Count} - Cuenta lista1: {Lista1.Count}")
    
     
    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    • Marcado como respuesta James2016-2 jueves, 3 de agosto de 2017 23:28
    jueves, 3 de agosto de 2017 21:38
  • ah! ok, gracias
    jueves, 3 de agosto de 2017 23:28