Vastus: Objektid, mida foreach saab läbida, peavad olema kollektsiooni- või massiiviobjektid, mis on tüüpi, mis rakendab superliidese IEnumeratorit või deklareeritud GetEnumeratori meetodit Q: Aga kui tavaliselt kasutan foreach in-i, siis kasutan seda otse ja pole probleemi. Kas tohin küsida, miks see nii on? Kui soovid rakendada superliidese IEnumeratori või deklareeritud GetEnumeratori meetodit, nagu küsimuses küsitud, mida peaksid tegema? Täname Vastus: Foreach in kasutamisel kasutame tavaliselt süsteemipõhist kogumisklassi (rakendades ICollection liidest). Näiteks arrayList, stringDictionary, array jne. Need on platvormi poolt pakendatud ja on lähedal IEnumeratori liidese rakendamisele. Selleks, et kirjutatud klass saaks samaaegselt foreach teha, pead liidese rakendama klassi kirjutamisel. See võimaldab iga läbimise järel. Näiteks defineeri inimeste klass ja rakenda IEnumeratori liides. Kui on olemas massiivi People[] tempPeople, siis saad kasutada: foreach( p in tempPeople){ console.writeline(p.name); See kõrvaldab for-loopide kasutamise probleemi. Mis puudutab Iemumeratori liidese rakendamist. Vaata lihtsalt MSDN-i. Võid otsida ka paksemat raamatut.
|