Ich frage mich, wann genau kann ich die foreach-Schleife verwenden? Muss ich IEnumerable implementieren?Ist IEnumerable erforderlich, um eine foreach-Schleife zu verwenden?
Antwort
können Sie foreach obwohl jedes Objekt, das IEnumerable
oder IEnumberable<T>
implementiert
Es gibt keine Notwendigkeit, die IEnumerable-Schnittstelle zu implementieren, ist die foreach-Anweisung zu verwenden. Hier ist ein Zitat aus der MSDN (http://msdn.microsoft.com/en-us/library/9yb8xew9.aspx):
In C#, ist es nicht unbedingt notwendig, für eine Sammlung Klasse erbt von IEnumerable und IEnumerator um mit foreach kompatibel zu sein. Solange wie die Klasse hat die erforderlichen GetEnumerator, MoveNext, Reset und Aktuelle Mitglieder, es wird mit foreach arbeiten. Das Auslassen der Schnittstellen hat den Vorteil, dass Sie den Rückgabetyp von Current zu spezifischer als Object zu definieren, die bietet Typ-Sicherheit.
Wie dieser, weil es korrekt besagt, dass IEnumerable ist nicht nötig. Es macht jedoch das Leben leichter. –
Das ist wirklich interessant, und das wusste ich nicht. Aber ich würde annehmen, dass dies hauptsächlich die Typsicherheit in .NET 1.0 unterstützt. Ich würde sagen, der beste Weg zur Gewährleistung der Typensicherheit ist heutzutage die Verwendung der generischen Version von IEnumerable. –
+1 Jeden Tag etwas Neues lernen. – BoltClock
Umfassende Erläuterung: http://msdn.microsoft.com/en-us/library/aa664754%28VS.71%29.aspx
Fragen Sie sich - brauchen Sie wirklich ein Schleifenzähler
Als Faustregel ich Bestimmung verwenden, wenn ich Daten zwischen zwei indizierte Container bewege, wo ich wirklich tun Benötigen Sie einen Indexwert, um das Ziel zu adressieren, oder, allgemeiner, brauche ich eine Indexzahl für jedes Element, das ich in der Schleife verarbeite? In diesen Fällen benutze ich eine for-Schleife, in fast allen anderen Fällen (wo foreach mit dem Container umgehen kann, was wie oben erwähnt ziemlich jeder Container ist) - der Grund ist ziemlich einfach, es sieht ziemlich dumm aus foreach und Dann müssen Sie sich die Mühe machen, einen Schleifenzähler manuell zu warten.
- 1. Ist eine Konfiguration erforderlich, um benutzerdefinierte Hibernate-Validierungsnachrichten zu verwenden?
- 2. Was ist erforderlich, um TypeScripts Import/Export zu verwenden?
- 3. Was ist erforderlich, um Ipython in Ironpython zu verwenden?
- 4. Welches Plugin ist erforderlich, um Hudson mit Svn zu verwenden?
- 5. WCF: Sind Metadaten erforderlich, um den WCF-Dienst zu verwenden?
- 6. Berechtigung erforderlich, UsageStatsManager zu verwenden
- 7. Ist es erforderlich, Java-Klassen zu generieren, um spring-ws-Client zu verwenden
- 8. Hilfe erforderlich ist, um LINQ-Abfrage
- 9. HTTP-Statuscode für "Client-Softwareupdate erforderlich" - Was ist zu verwenden?
- 10. Verwenden von ActionController :: Live ist Ruhezustand erforderlich?
- 11. Eine Ganzzahl ist erforderlich? (Offen)
- 12. Visual Studio "Pin ist erforderlich, um eine Verbindung herzustellen"
- 13. Ist eine REST-API-Anfrage erforderlich, um ein Cookie einzubinden?
- 14. Ist web.xml erforderlich, um eine Spring-Boot-Anwendung bereitzustellen
- 15. Was ist erforderlich, um einen ADT in Clojure zu implementieren?
- 16. Tapping ist zweimal erforderlich, um die Tabellenzelle zu deaktivieren
- 17. Ist es erforderlich, super.onActivityResult() in onActivityResult() zu verwenden?
- 18. Ist HttpWebRequest.GetResponse erforderlich, um einen POST abzuschließen?
- 19. Atleast eine Auswahlbox ist erforderlich
- 20. Refactoring erforderlich, um die Testbarkeit zu verbessern
- 21. C# - IEnumerable zu Begrenzungszeichenfolge
- 22. Ist Ertragsrendite == IEnumerable & IEnumerator?
- 23. Übergeben IEnumerable zu Controller
- 24. Erforderlich, um zu der von MediaRecorder verwendeten Oberfläche zu zeichnen
- 25. Cast IList zu IEnumerable
- 26. Verwenden Bindeoperator, um eine Funktion zu curry?
- 27. Was ist erforderlich, um das Marshalling für eine COM-Schnittstelle zu aktivieren?
- 28. Wie füge ich "erforderlich" hinzu, um das Etikett zu bilden, wenn eine bestimmte Option eingestellt ist?
- 29. Um eine freigegebene Assembly zu erstellen, ist ein Overhead der Signierung erforderlich?
- 30. Ist eine Schleife erforderlich, um jedes Mitglied eines Arrays von Strukturen auf dem Heap zu setzen?
[1. Antwort] (http://msdn.microsoft.com/fr-fr/library/ttw7t8t6%28VS.80%29.aspx) bei Google. – pascal
http://msdn.microsoft.com/en-us/library/9yb8xew9(VS.80).aspx – Dave
Sie können sie dienstags und donnerstags und während des fünften Wochenendes eines Kalendermonats verwenden. –