다음 조건은 사전 조건에서 실패합니다. 코드 계약의 버그입니까?코드 계약이있는 반복기의 버그?
static class Program
{
static void Main()
{
foreach (var s in Test(3))
{
Console.WriteLine(s);
}
}
static IEnumerable<int>Test (int i)
{
Contract.Requires(i > 0);
for (int j = 0; j < i; j++)
yield return j;
}
}
Requester가 IteratorImpl의 생성자 대신 MoveNext에 있어야하는 이유는 무엇입니까? –
@pn, 이것은 C# 팀이 반복자를 구현하는 방법과 같습니다. 반복기의 본문에 나타나는 코드는 생성 된 코드의 MoveNext 메서드로 끝납니다. – JaredPar
제 질문은이 코드 계약의 버그 여부입니다. 코드 작성자가 반복자를 이해하지 못하는 것 같습니다. –