2012-11-28 2 views
-8

로하지 않았다 왜이 내 기능입니다 :내 코드 내 기능

IEnumerable<Packet> packets = splitPacket(packet, 2); 

public static IEnumerable<Packet> splitPacket(Packet packet, int numberOfFragments) 
{ 
    // 
} 

나는이 함수를 호출하고 있지만 어떤 이유로 내 코드 내 함수로하지 않았다.

답변

8

내 심령 디버깅 스킬이 사용자의 기능이 iterator function 인 것으로 나타났습니다. 즉, yield return; 문을 포함하고 있습니다.

이터레이터 함수의 코드는 결과가 반복 될 때만 실행됩니다.
deferred execution이라고합니다.

+5

심각하게? 그가 올린 글에서 얻은거야? –

+0

@JonB 실제로는 매우 일반적인 문제입니다. – Servy

+0

@JonB - 함수의 반환 유형이 그 방향으로 큰 표시라고 확신합니다. –