Der folgende Code schlägt bei der Vorbedingung fehl. Ist das ein Fehler in Code-Verträgen?Fehler in Iteratoren mit Codeverträgen?
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;
}
}
Warum sollten die Requires in BewegungNext anstelle des Konstruktors von IteratorImpl sein? –
@pn, so entschied sich das C# -Team für die Implementierung von Iteratoren. Jeder Code, der im Hauptteil eines Iterators erscheint, endet in der MoveNext-Methode des generierten Codes. – JaredPar
Meine Frage ist, ob das ein Fehler in Code-Verträgen ist oder nicht. Es sieht so aus, als ob der Code Contract Re Writer Iteratoren nicht versteht. –