2011-09-12 5 views
0
'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 

윌이 :복사 LINQ 쿼리는 목록으로

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 쿼리가 여전히 동일한 데이터를 참조 할 것입니까?

답변

3

이들은 여전히 ​​동일한 개체를 참조합니다. 즉, 추가 ResXDataNode 개체를 생성하지 않습니다. 수동으로 하나씩 추가하는 것보다 간단 할 것 movedNodes.ToList()를 호출하는 방식으로

, ...

는 이제 때마다 당신이 movedNodes을 반복하는 것이 완벽하게 가능 그것을 새 개체를 만들 수 있습니다 - 그것은 정말 무엇에 따라 달라집니다 그리고 당신은 어떻게 그것이 만들어지고 있는지를 보여주지 못했습니다. 그러나 목록 에 복사하면 새 개체를 만들 수 없습니다.

+0

@Downvoter : 관심있는 댓글? –

+0

나는 나머지 코드를 올렸다. 나는하려고 노력했다. 그리고 그것은 내가 원했던 것처럼 보였다. 흥미롭게도 루핑과 추가와 다르게 작동합니다. – dotnetN00b

+0

다른 점은 무엇입니까? – Magnus

3

ResXDataNode이 참조 유형 인 경우 사본이 생성되어 새 목록에 추가되는 값 유형 인 경우에도 동일한 객체를 참조합니다.

편집 : ResXDataNode은 참조 유형이므로 새 목록은 여전히 ​​같은 개체를 나타냅니다.

+0

정확합니다. 클론 방법은 필요하지 않습니다. 때문에 .ToList. – dotnetN00b

관련 문제