簡體   English   中英

c#更改變量對象也會更改原始對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM