Svar: Objekter som kan gjennomgås av foreach må være samlings- eller array-objekter, som er av typen som implementerer supergrensesnittet IEnumerator eller den deklarerte GetEnumerator-metoden Q: Men når jeg vanligvis bruker Foreach In, bruker jeg det direkte, og det er ikke noe problem. Kan jeg spørre, hvorfor er det slik? Hvis du vil implementere typen supergrensesnitt IEnumerator eller den deklarerte GetEnumerator-metoden som spurt i spørsmålet, hva bør du gjøre? Takk Svar: Når vi bruker foreach i, bruker vi vanligvis en systemdefinert samlingsklasse (implementering av ICollection-grensesnittet). For eksempel arrayList, stringDictionary, array, osv. Disse pakkes av plattformen og er nær implementeringen av IEnumerator-grensesnittet. For at klassen du skriver skal kunne foreach samtidig, må du implementere grensesnittet når du skriver klassen. Dette gir mulighet for hver gjennomgang etterpå. For eksempel, definer en klasse av personer og implementer IEnumerator-grensesnittet. Hvis det finnes et array People[] tempPeople, kan du bruke: foreach( p i tempPeople){ console.writeline(p.name); Dette eliminerer problemet med å bruke for-løkker. Når det gjelder hvordan man implementerer Iemumerator-grensesnittet. Bare sjekk MSDN. Du kan også se etter en tykkere bok.
|