[英]c# Changing variable object also changes original
據我了解,當您使用new定義變量時,它將使用新的指針,因此它們將彼此獨立。
但是,當我執行以下代碼時,當我只希望“ cats”從原始“ apps”列表中重新初始化其值時,“ apps”中的“ Selected”屬性也會變為true。
我錯過了什么嗎?
List<Apps> apps = (from a in db.Categories
select new Apps
{
CategoryId = a.CategoryId,
CategoryName = a.CategoryName,
Selected = false
}).ToList();
foreach (var user in adminUserList)
{
List<Apps> cats = new List<Apps>(apps);
cats[0].Selected = true;
}
盡管您擁有淺層的list副本,但是由於它們引用了list的相同對象元素,但是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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.