Odgovor: Objekti, ki jih lahko foreach prehaja, morajo biti objekti zbirke ali tabele, ki so tipa, ki implementira supervmesnik IEnumerator ali deklarirano metodo GetEnumerator Q: Ampak ko običajno uporabljam foreach in, ga uporabljam neposredno in ni nobenih težav. Lahko vprašam, zakaj je temu tako? Če želite implementirati tip super vmesnika IEnumerator ali deklarirane metode GetEnumerator, kot je bilo zadano v vprašanju, kaj storiti? Hvala Odgovor: Pri uporabi foreach in običajno uporabljamo sistemsko definiran razred zbirk (implementiran ICollection vmesnik). Na primer, arrayList, stringDictionary, array itd. Ti so pakirani s strani platforme in so blizu implementaciji vmesnika IEnumerator. Da bi lahko tečaj, ki ga pišete, lahko hkrati obvladuje, morate vmesnik implementirati že pri pisanju tečaja. To omogoča nadaljnje premikanje. Na primer, definirajte razred ljudi in implementirajte vmesnik IEnumeratorja. Če obstaja polje People[] tempPeople, lahko uporabite: foreach( p in tempPeople){ console.writeline(p.name); To odpravlja težave z uporabo zank for loops. Kar zadeva implementacijo vmesnika Iemumerator. Samo preveri MSDN. Lahko pa poiščeš tudi debelejšo knjigo.
|