나는 C# 반복자 (예 : IEnumerable)를 사용하는 리펙토 러를 사용하고 싶습니다. 불행히도 다른 함수들이 iterator를 다시 시작시키지 않으면 서 iterator로 작업 할 수있는 가장 좋은 방법을 알 수는 없습니다. 예를 들어반복기의 사용 방법을 리팩토링하는 방법
: 내가 이렇게 할 이유
NewLineEnumerator nle = new NewLineEnumerator();
while (bytesRead > 0)
{
var nlenum = nle.Process(inputData, bytesRead);
foreach (string block in nlenum)
{
DoSomething(nlenum);
}
}
void DoSomething(IEnumerable<string> myiter)
{
foreach (var s in myiter)
{
// myiter is restarted, and begins at the start of the iterator again
}
}
당신이 요구 될 수 있습니다. 그 이유는 "명령 블록"으로 둘러싸인 데이터 스트림이 있기 때문입니다. 명령에 따라 처리 할 다른 하위 함수로 보냅니다. 그래서 시작이나 끝에서 스트림에서 중단 한 부분을 반복하고 싶습니다.
여기에 어떤 제안이 있습니까?
그러나 foreach는 –
에있는 IEnumerator를 사용할 수 없음 ,하지만 당신은 하나에서 일반 열거 형을 구축하고 전달할 수 있습니다. –
당신은 정교 할 수 있습니까? –