首頁 > 後端開發 > C++ > C# 的「ToList()」是否建立新的參考清單或元素副本?

C# 的「ToList()」是否建立新的參考清單或元素副本?

Mary-Kate Olsen
發布: 2025-01-02 19:05:39
原創
743 人瀏覽過

Does C#'s `ToList()` Create a New List of References or Copies of Elements?

ToList() 是否建立新清單?

在 C# 中,ToList() 方法傳回一個新列表,其中包含來自原創收藏。然而,問題出現了,它是否創建了一個新的引用列表或元素的副本?

考慮以下範例:

public class MyObject
{
    public int SimpleInt { get; set; }
}

public void RunChangeList()
{
    var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } };
    var whatInt = ChangeToList(objs);
}

public int ChangeToList(List<MyObject> objects)
{
    var objectList = objects.ToList();
    objectList[0].SimpleInt = 5;
    return objects[0].SimpleInt;
}
登入後複製

在這種情況下,ToList() 建立一個新的對與原始清單相同的物件的參考清單。這是因為 MyObject 是引用類型,這意味著它在記憶體中儲存物件的位址。

當新清單中引用的物件的 SimpleInt 屬性發生變更時,變更會傳回原來的名單。這是因為新列表和原始列表都引用同一個物件。

如果 MyObject 被聲明為結構而不是類,則 ToList() 方法將建立一個新列表,其中包含以下元素的副本原來的名單。在這種情況下,對新清單中的元素所做的變更不會影響原始清單中的對應元素。

以上是C# 的「ToList()」是否建立新的參考清單或元素副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板