【发布时间】:2017-01-14 16:38:08
【问题描述】:
我有一节课
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; }
}
我已经使用下面提到的这个类创建了新列表
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();
我还初始化了新列表List<MatchAddress> lm;
现在我将dst 列表分配给lm,如下所示
lm = dst ;
foreach (MatchAddress ma in lm)
{
if (ma.Name == "xyz")
{
ma.Pincode = null;
}
}
在此之后确保列表lm 的属性Pincode 设置为null 其中name = "XYZ"。
因此列表lm 被更新并设置密码字段为空。
但我的问题是,为什么该列表 lm 也会更新列表 dst 的结果。
和lm列表也将dst列表中的pincode设置为空。
我们将dst 列表克隆为lm 那么为什么列表lm 更改也列表dst ??
我知道这背后的原因,而不是为什么会发生这种情况,如果您知道,请现在告诉我。
我不想回答这个问题
【问题讨论】:
-
您不是在克隆
dst,而是将dst列表分配给通过引用分配的lm列表,这就是两个列表都发生变化的原因。