Por que a outra lista também muda se eu alterei os dados de uma lista? [duplicado]
Esta pergunta já tem uma resposta aqui:
Como fazer o clone correto da lista <MyObject>? [duplicado] 3 respostasEu tenho uma aula
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; }
}
Criei uma nova lista usando esta classe, conforme mencionado abaixo
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();
Eu também inicializei uma nova listaList<MatchAddress> lm;
Agora eu estou atribuindodst
lista paralm
como abaixo
lm = dst ;
foreach (MatchAddress ma in lm)
{
if (ma.Name == "xyz")
{
ma.Pincode = null;
}
}
depois disso, a propriedadePincode
para a listalm
definido comonull
onde nome = "XYZ".
e por esse motivo listalm
são atualização e definem o campo pincode null.
mas minha pergunta é por que essa lista lm também atualiza o resultado da lista dst.
elm
lista também define o código PIN nulo na listadst
.
e nós fazemos o clone dodst
listar emlm
então porque listarlm
alterar também a lista dst ??
Eu sei que a razão por trás disso não é a resposta por que isso acontece se você souber, por favor, deixe-me agora.
Eu não quero a resposta desta pergunta