목록의 각 요소에 대해 작업을 수행하는 List(T).ForEach()
이 있습니다. 그러나 MSDN 설명은 List
요소가 통과 할 순서에 대해 아무 것도 말하지 않으며 엄격하게 순서대로 트래버스해야합니다.요소를 순차적으로 순회하는 List (T) .ForEach()를 사용할 수 있습니까?
ForEach()
으로 어떻게 해결할 수 있습니까?
목록의 각 요소에 대해 작업을 수행하는 List(T).ForEach()
이 있습니다. 그러나 MSDN 설명은 List
요소가 통과 할 순서에 대해 아무 것도 말하지 않으며 엄격하게 순서대로 트래버스해야합니다.요소를 순차적으로 순회하는 List (T) .ForEach()를 사용할 수 있습니까?
ForEach()
으로 어떻게 해결할 수 있습니까?
는 또한 목록의 자연 순서입니다 정상 foreach
루프와 같은 순서로 이동합니다.
예, 문서에 명시되어 있지 않지만 명백한 동작이므로 변경하지 않는 것에 의존하는 것이 합리적이라고 생각합니다.
(현재 Parallel.ForEach
물론, 다른 문제입니다.)
+1 및 질문에 게시 된 Msdn 문서의 예에서는 순서가 보존되어 있음을 보여줍니다. 매번 언급 할 필요가없는 몇 가지 사항이 있습니다. – NotJarvis
@NotJarvis :이 경우에 * 명시된 경우 더 좋을 것입니다. –
@Jon : 음, 공정하게 말하면, foreach] (http://msdn.microsoft.com/en-us/library/ttw7t8t6(v= VS.100) .aspx) 명령 자체는 순서를 지정하지 않습니다. 명시 적으로 순서를 전달하는 확장 된 ForEach를 생각하면 좋은 (다소 무의미한) 운동이 될 것입니다. :) –
List<T>
클래스는 문서 경우에도 순서를 유지합니다 열거 나 ForEach
방법 를 사용하여 반복 항목의 정렬 된 컬렉션을 나타냅니다, 그래서 이것에 대해서는 아주 명확하지 않습니다.
요소의 순서가 필수 인 경우 설계 순서에 따라 Queue<T>
(LIFO) 또는 Stack<T>
(FIFO)을 사용하는 것이 좋습니다. 이 경우 LINQ 확장 메서드를 사용하는 대신 클래식 루프를 사용하거나 직접 구현해야합니다.
List.ForEach의 현재 구현 방법은 다음과 같습니다. https://gist.github.com/1066881 – Kobi
@Kobi : 소스 및 라이센스 견적을 제출 하시겠습니까? (적어도 소스는 라이센스를 언급 할 것이므로) – sehe
@sehe - .Net의 어셈블리에서 IL Spy를 사용하여 디 컴파일. 라이센스를 확인하지 않았지만 연구/학습 목적으로 "공정 사용"에 해당해야합니다. – Kobi