当调用 ToList() 时,它会创建一个新列表吗?
在这种情况下,我们正在使用一个名为MyObject 具有名为 SimpleInt 的属性。假设我们有一个 MyObject 实例的列表。如果我们要在此列表上执行 ToList() 并随后修改新列表中某个元素的 SimpleInt 属性,此更改是否会传播回原始列表?
理解 ToList( ) 函数
ToList() 方法旨在创建原始列表的新副本。但是,在这种特定情况下,我们正在处理引用类型(即 MyObject 是引用类型)。这意味着当我们使用 ToList() 创建新列表时,新列表将包含对与原始列表相同的对象的引用。
引用类型的后果
由于 MyObject 是引用类型,因此更改新列表中引用的对象的 SimpleInt 属性也会影响原始列表中的相应对象。这是因为两个列表都指向相同的实例。
结构与类
需要注意的是,此行为仅适用于引用类型。如果 MyObject 被声明为结构体(值类型)而不是类(引用类型),则通过 ToList() 新创建的列表将包含原始列表元素的副本。因此,对新列表中的结构元素所做的任何修改都不会影响原始列表。
以上是ToList() 创建列表的深拷贝还是浅拷贝?的详细内容。更多信息请关注PHP中文网其他相关文章!