Svar: Objekter, der kan gennemsøges af foreach, skal være samlings- eller array-objekter, som er af den type, der implementerer superinterface-IEnumerator eller den deklarerede GetEnumerator-metode Q: Men når jeg normalt bruger Foreach In, bruger jeg det direkte, og der er ikke noget problem. Må jeg spørge, hvorfor det er sådan? Hvis du vil implementere typen af superinterfacet IEnumerator eller den erklærede GetEnumerator-metode, som der er spurgt i spørgsmålet, hvad skal du så gøre? Tak Svar: Når vi bruger foreach i, bruger vi normalt en systemdefineret samlingsklasse (implementering af ICollection-interfacet). For eksempel arrayList, stringDictionary, array osv. Disse pakkes af platformen og er tæt på at implementere IEnumerator-grænsefladen. For at den klasse, du skriver, kan foreach samtidig, skal du implementere interfacet, når du skriver klassen. Dette muliggør hver efterfølgende gennemfart. For eksempel definer en klasse af personer og implementer IEnumerator-grænsefladen. Hvis der er et array People[] tempPeople, kan du bruge: foreach( p i tempPeople){ console.writeline(p.name); Dette eliminerer besværet med at bruge for-løkker. Hvad angår hvordan man implementerer Iemumerator-interfacet. Tjek bare MSDN. Du kan også kigge efter en tykkere bog.
|