Atsakymas: Objektai, kuriuos gali pereiti foreach, turi būti rinkinio arba masyvo objektai, kurie yra tokio tipo, kuris įgyvendina supersąsają IEnumerator arba deklaruotą GetEnumerator metodą Q: Bet kai aš paprastai naudoju foreach in, aš jį naudoju tiesiogiai, ir nėra jokių problemų. Ar galiu paklausti, kodėl taip yra? Jei norite įdiegti super sąsajos IEnumerator tipą arba deklaruotą GetEnumerator metodą, kaip klausiama klausime, ką turėtumėte daryti? Ačiū Atsakymas: Kai naudojame foreach in, mes paprastai naudojame sistemos apibrėžtą rinkimo klasę (įgyvendinant ICollection sąsają). Pavyzdžiui, arrayList, stringDictionary, masyvas ir kt. Jie yra supakuoti platformoje ir yra arti IEnumerator sąsajos įgyvendinimo. Kad jūsų rašoma klasė galėtų atlikti kiekvieną tuo pačiu metu, rašydami klasę turite įdiegti sąsają. Tai leidžia po to pereiti kiekvieną kartą. Pavyzdžiui, apibrėžkite žmonių klasę ir įdiekite IEnumerator sąsają. Jei yra masyvas People[] tempPeople, tuomet galite naudoti: foreach( p in tempPeople){ console.writeline(p.name); Tai pašalina kilpų naudojimo rūpesčius. Kalbant apie tai, kaip įdiegti "Iemumerator" sąsają. Tiesiog patikrinkite MSDN. Taip pat galite ieškoti storesnės knygos.
|