IEnumerableT in C #

8

Ich versuche, den folgenden Code zu kompilieren, bekomme aber Fehler in VS2008. Kann mir jemand sagen, wo ich falsch liege?

%Vor%     
fcuk112 23.07.2009, 21:51
quelle

4 Antworten

24

Nun, der erste Compilerfehler, den ich bekomme, ist, dass er beschwert:

  

Die Verwendung des generischen Typs 'System.Collections.Generic.IEnumerator' erfordert Argumente vom Typ '1'

Dies ist in Zeile 16, diese:

%Vor%

Dies wurde behoben, indem eine using-Direktive für den Namespace System.Collections hinzugefügt wurde (Tipp: Platziere den Cursor direkt hinter IEnumerator, am r am Ende des Wortes und drücke Strg +. (Strg + der Punkt-Taste), sollte es vorschlagen, dass Sie eine "using System.Collections;" - Direktive hinzufügen, tun Sie das.

Dann kompiliert es und läuft. Passt das zu dem, was Sie erwarten?

Beachten Sie außerdem, dass Sie immer die tatsächlichen Fehlermeldungen, die Sie erhalten, posten sollten. Auf diese Weise bellen wir nicht den falschen Baum, wenn etwas anderes mit Ihrem Code nicht stimmt, was wir auf den ersten Blick nicht sehen / p>

Zusätzlich können Sie diese sehr häufige Implementierung von IEnumerable<T> vereinfachen, indem Sie eine der Methoden aus der anderen aufrufen. Daher würde ich die Implementierung der zweiten Methoden wie folgt vereinfachen:

%Vor%

Auf diese Weise implementieren Sie nur den eigentlichen Enumerator-Code einmal.

Und schließlich Earwicker s Lasse Vågsæther Karlsen 23.07.2009, 21:56

quelle
9

Nicht sicher, warum Sie Fehler bekommen, aber wäre das nicht einfacher?

%Vor%     
Daniel Earwicker 23.07.2009 21:57
quelle
4

Etwas off-topic, aber vielleicht interessant zu sehen ist dieser Ansatz:

%Vor%

C # 3.0 afaik. Achte auf die scheinbar endlose Schleife im Getter und den Aufruf zu Take (1000). Mit dieser Methode haben Sie nun eine "endlose" Folge von natürlichen Zahlen (endlos bis zum Maximalwert eines int). Es wird nicht hängen bleiben, solange Sie es sagen, um eine bestimmte Menge zu nehmen.

HAFTUNGSAUSSCHLUSS: Der meiste Code entlehnte Earwickers Antwort.

    
Erik van Brakel 23.07.2009 22:04
quelle
2

Lasse hat die richtige Antwort, und ich weiß, dass das Lernen von Code ist, aber im Interesse der Förderung Ihres Lernens möchte ich zwei Dinge erwähnen:

  1. Enumerable.Range()
  2. Nehmen Sie sich etwas Zeit, um über diese Implementierung nachzudenken:

.

%Vor%     
Joel Coehoorn 23.07.2009 22:09
quelle

Tags und Links