Antwort: Objekte, die von foreach durchquert werden können, müssen Collection- oder Array-Objekte sein, die vom Typ sind, der den Superinterface-IEnumerator oder die deklarierte GetEnumerator-Methode implementiert Q: Aber wenn ich Foreach In normalerweise benutze, nutze ich es direkt und es gibt kein Problem. Darf ich fragen, warum das so ist? Wenn du den Typ des Super-Interfaces IEnumerator oder der deklarierten GetEnumerator-Methode wie in der Frage gestellt implementieren möchtest, was solltest du tun? Vielen Dank Antwort: Beim Einsatz von foreach in verwenden wir in der Regel eine systemdefinierte Collection-Klasse (Implementierung der ICollection-Schnittstelle). Zum Beispiel arrayList, stringDictionary, Array usw. Diese werden von der Plattform selbst paketiert und stehen kurz davor, die IEnumerator-Schnittstelle zu implementieren. Damit die Klasse, die du schreibst, gleichzeitig foreachen kann, musst du die Schnittstelle beim Schreiben der Klasse implementieren. Dies ermöglicht jede weitere Durchquerung. Definieren Sie zum Beispiel eine Klasse von Personen und implementieren Sie die IEnumerator-Schnittstelle. Wenn es ein Array People[] tempPeople gibt, kannst du verwenden: foreach( p in tempPeople){ console.writeline(p.name); Das beseitigt die Mühe, For-Schleifen zu verwenden. Was die Implementierung der Iemumerator-Oberfläche angeht: Schau einfach auf MSDN. Du kannst auch nach einem dickeren Buch suchen.
|