Gibt es eine HasNext-Methode für einen IEnumerator?

7

Mit Java Iterator s habe ich die Methode hasNext verwendet, um zu bestimmen, ob eine Iteration mehr Elemente enthält (ohne ein Element zu verbrauchen) - also ist hasNext wie eine Methode " Peek " / p>

Meine Frage: Gibt es so etwas wie eine Methode " hasNext " oder " Peek " mit C # 's generic IEnumerator s?

    
JaysonFix 13.08.2009, 16:13
quelle

5 Antworten

15

Nein, leider nicht.

Die IEnumerator<T> -Schnittstelle zeigt nur die folgenden Mitglieder:

Methoden:

  

Dispose
MoveNext
Reset

Eigenschaften :

  

Current

    
Andrew Hare 13.08.2009, 16:14
quelle
33

Nein, aber in C # können Sie wiederholt nach dem aktuellen Element fragen, ohne zum nächsten zu wechseln. Es ist nur eine andere Sichtweise.

Es wäre nicht too schwer, eine C # -Klasse zu schreiben, um einen .NET-Style IEnumerator zu erhalten und einen Java-Style Iterator zurückzugeben. Persönlich finde ich den .NET-Stil in den meisten Fällen einfacher zu benutzen, aber da gehen wir:)

EDIT: Okay, das ist komplett ungetestet, aber ich denke es wird funktionieren. Es kompiliert zumindest:)

%Vor%     
Jon Skeet 13.08.2009 16:20
quelle
3

Aufzählungszeichen werden oft ungenau ausgewertet, daher macht HasNext wenig Sinn.

    
Ray 13.08.2009 16:44
quelle
2

Nein , nur MoveNext , Reset und Current .

    
Matt Howells 13.08.2009 16:20
quelle
1

Sie können auch versuchen, sich dieses Implementing Peek anzuschauen IEnumerator und IEnumerator & lt; & gt; & gt; . Es ist eine Erweiterungsmethode, die IEnumerator die Peek-Funktionalität hinzufügt. Ich hoffe es hilft. :)

    
Bryida 24.08.2016 11:26
quelle

Tags und Links