Principales respuestas
Consulta sobre listas

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
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
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. -
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
-
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
-