Atbilde: Objektiem, kurus var šķērsot foreach, jābūt kolekcijas vai masīva objektiem, kas ir tāda tipa, kas ievieš superinterfeisa IEnumerator vai deklarēto GetEnumerator metodi Q: Bet, kad es parasti izmantoju foreach in, es to izmantoju tieši, un nav problēmu. Vai es drīkstu jautāt, kāpēc tas tā ir? Ja vēlaties ieviest super interfeisa IEnumerator tipu vai deklarēto GetEnumerator metodi, kā uzdots jautājumā, kas jums jādara? Paldies Atbilde: Izmantojot foreach in, mēs parasti izmantojam sistēmas definētu savākšanas klasi (ieviešot ICollection interfeisu). Piemēram, arrayList, stringDictionary, masīvs utt. Tie ir iepakoti platformā un ir tuvu IEnumerator saskarnes ieviešanai. Lai jūsu rakstītā klase varētu vienlaicīgi veikt darbu, rakstot klasi, jums ir jāievieš saskarne. Tas ļauj pēc tam šķērsot katru šķērsošanu. Piemēram, definējiet cilvēku klasi un ieviesiet IEnumerator interfeisu. Ja ir masīvs People[] tempPeople, tad varat izmantot: foreach( p in tempPeople){ console.writeline(p.name); Tas novērš cilpu izmantošanas problēmas. Kas attiecas uz to, kā ieviest Iemumerator interfeisu. Vienkārši pārbaudiet MSDN. Varat arī meklēt biezāku grāmatu.
|