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中文網其他相關文章!