c#更改变量对象也会更改原始对象

时间:2015-07-16 15:24:04

标签: c# model-view-controller

据我了解,当你用new定义一个变量时,它会使用一个新的指针,所以它们会彼此独立。

但是,当我执行以下代码时,当我只想让“猫”从原来的“应用”列表中重新初始化其值时,“apps”中的“Selected”属性也会变为true。

我错过了什么吗?

main.cpp

1 个答案:

答案 0 :(得分:1)

虽然你有一个列表的浅层副本但是List的元素仍然指向相同的内存位置,所以他们正在对列表中的相同对象元素进行攻击,你必须以这种方式创建新对象:

List<Apps> cats = apps.Select(x=>new Apps
                   {
                        CategoryId = x.CategoryId,
                        CategoryName = x.CategoryName,
                        Selected = false
                   }).ToList();

现在迭代猫:

foreach (var user in adminUserList)
{

     cats[0].Selected = true;
}
相关问题