首頁 > 後端開發 > C++ > C# 的 ToList() 是否建立清單元素的深拷貝或淺拷貝?

C# 的 ToList() 是否建立清單元素的深拷貝或淺拷貝?

DDD
發布: 2025-01-04 00:28:39
原創
719 人瀏覽過

Does C#'s ToList() Create a Deep Copy or a Shallow Copy of the List's Elements?

ToList():它會建立一個新清單嗎?

在 C# 中,ToList() 是建立新清單的方法現有清單中元素的副本。對於像類別這樣的引用類型,副本包含與原始物件相同的物件的參考。

考慮以下程式碼:

public class MyObject
{
    public int SimpleInt { get; set; }
}
...
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;
}
登入後複製

在此程式碼中,ChangeToList 方法採用MyObject 物件的列表,並使用 ToList() 將其轉換為新列表。然後它修改新清單中第一個物件的 SimpleInt 屬性。

這裡要注意的關鍵點是 MyObject 是引用型別。因此,ToList() 操作會建立一個新列表,但新列表中的元素是對原始列表中相同物件的參考。因此,當新清單中引用的物件的 SimpleInt 屬性被修改時,該變更也會反映在原始清單中的對應物件中。這就是為什麼 RunChangeList() 方法的輸出將為 5,因為新清單中所做的修改會傳播到原始清單。

以上是C# 的 ToList() 是否建立清單元素的深拷貝或淺拷貝?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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