Răspuns: Obiectele care pot fi parcurse de foreach trebuie să fie obiecte colecție sau array, care sunt de tipul ce implementează superinterfața IEnumerator sau metoda declarată GetEnumerator Q: Dar când folosesc de obicei foreach in, îl folosesc direct și nu e nicio problemă. Pot să întreb de ce se întâmplă asta? Dacă vrei să implementezi tipul superinterfeței IEnumerator sau metoda declarată GetEnumerator, așa cum este întrebată în întrebare, ce ar trebui să faci? Vă mulțumesc Răspuns: Când folosim foreach in, de obicei folosim o clasă de colecție definită de sistem (implementând interfața ICollection). De exemplu, arrayList, stringDictionary, array etc. Acestea sunt ambalate de platformă și sunt aproape de implementarea interfeței IEnumerator. Pentru ca clasa pe care o scrii să poată folosi în același timp, trebuie să implementezi interfața atunci când scrii clasa. Acest lucru permite traversarea în foreach după aceea. De exemplu, definește o clasă de persoane și implementează interfața IEnumerator. Dacă există un array People[] tempPeople, atunci poți folosi: foreach( p in tempPeople){ console.writeline(p.name); Acest lucru elimină dificultățile folosirii buclei for. În ceea ce privește modul de implementare a interfeței Iemumerator. Verifică MSDN. Poți căuta și o carte mai groasă.
|