据我了解,当你用new定义一个变量时,它会使用一个新的指针,所以它们会彼此独立。
但是,当我执行以下代码时,当我只想让“猫”从原来的“应用”列表中重新初始化其值时,“apps”中的“Selected”属性也会变为true。
我错过了什么吗?
main.cpp
答案 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;
}