¿Por qué la otra lista también cambia si he cambiado los datos de una lista? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Cómo hacer un clon correcto de la Lista <MiObjeto>? [duplicar] 3 respuestasTengo una clase
class MatchAddress
{
public string Name { get; set; }
public string Taluka { get; set; }
public string District { get; set; }
public string Pincode { get; set; }
public float Rank { get; set; }
}
He creado una nueva lista usando esta clase como se menciona a continuación
var dst = ds.Tables[0].AsEnumerable()
.Select(s => new MatchAddress
{
Name = s.Field<String>("officename").Trim().ToLower(),
Pincode = Convert.ToString(s.Field<double>("pincode")).Trim(),
Taluka = s.Field<String>("Taluk").Trim(),
District = s.Field<String>("Districtname").Trim(),
Rank = 0f
})
.ToList();
También he inicializado una nueva listaList<MatchAddress> lm;
Ahora estoy asignadodst
lista paralm
como abajo
lm = dst ;
foreach (MatchAddress ma in lm)
{
if (ma.Name == "xyz")
{
ma.Pincode = null;
}
}
después de esto seguro la propiedadPincode
para la listalm
ajustado anull
donde nombre = "XYZ".
y por eso listalm
se actualizan y establecen nulo el campo de código PIN.
pero mi pregunta es por qué esa lista también actualizo el resultado de la lista dst.
ylm
lista también establece nulo de código PIN en la listadst
.
y hacemos el clon deldst
enumerar enlm
Entonces, ¿por qué listarlm
cambiar la lista también dst ??
Sé que razonar detrás de esto no es la respuesta de por qué sucede esto si lo sabes, por favor déjame ahora.
No quiero la respuesta de esta pregunta