Antwoord: Objecten die door foreach kunnen worden doorkruist, moeten collectie- of array-objecten zijn, die van het type zijn dat de superinterface IEnumerator of de gedeclareerde GetEnumerator-methode implementeert Q: Maar als ik Foreach In gebruik, gebruik ik het direct, en is er geen probleem. Mag ik vragen, waarom is dat zo? Als je het type superinterface IEnumerator of de gedeclareerde GetEnumerator-methode zoals in de vraag gesteld wilt implementeren, wat moet je dan doen? Bedankt Antwoord: Bij het gebruik van foreach in gebruiken we meestal een systeemgedefinieerde verzamelingsklasse (waarbij de ICollection-interface wordt geïmplementeerd). Bijvoorbeeld arrayList, stringDictionary, array, enzovoort. Deze worden door het platform gepresenteerd en liggen dicht bij de implementatie van de IEnumerator-interface. Om ervoor te zorgen dat de klasse die je schrijft tegelijkertijd kan voor each, moet je de interface implementeren bij het schrijven van de klasse. Dit maakt elke doorgang daarna mogelijk. Definieer bijvoorbeeld een klasse van mensen en implementeer de IEnumerator-interface. Als er een array People[] tempPeople is, dan kun je gebruiken: foreach( p in tempPeople){ console.writeline(p.name); Dit elimineert het probleem van het gebruik van for-lussen. Wat betreft hoe je de Iemumerator-interface kunt implementeren. Kijk gewoon op MSDN. Je kunt ook zoeken naar een dikker boek.
|