'Read RESX file and returns a List(Of ResXDataNode)
Dim allNodes = getResourceData()
'Linq Query to extract the nodes
Dim movedNodes = From rowNodes In allNodes _
Where rowNodes.Comment = oldRowNumber _
Select rowNodes
请问:
Dim nodesToMove As List(Of ResXDataNode) = New List(Of ResXDataNode)
For Each movedNode As ResXDataNode In movedNodes
nodesToMove.Add(movedNode)
Next
或
Dim nodesToMove As List(Of ResXDataNode) = movedNodes.ToList
提供两个单独的节点副本?或者List和Linq查询是否仍然引用相同的数据?
答案 0 :(得分:3)
他们仍将引用相同的对象 - 不会创建任何额外的ResXDataNode
个对象。
顺便说一下,调用movedNodes.ToList()
会比手动添加每个更简单......
现在很有可能每次迭代movedNodes
它可能创建新对象 - 它实际上取决于它正在做什么,而你还没有展示它是如何被创建的。但是复制到列表不会创建新对象。
答案 1 :(得分:3)
如果ResXDataNode
是引用类型,它们仍将引用相同的对象,如果它是值类型,则创建副本并将其添加到新列表中。
编辑:ResXDataNode
是一种引用类型,因此新列表仍将引用相同的对象。