Válasz: Azok az objektumok, amelyeket foreach áthaladhat, gyűjtemény- vagy tömbobjektumoknak kell lenniük, amelyek olyan típusúak, amelyek a szuperinterfész IEnumeratort vagy a bejelentett GetEnumerator módszert valósítják meg Q: De amikor általában foreach be-t használok, közvetlenül használom, és nincs gond. Megkérdezhetem, miért van ez így? Ha azt a szuper interfész IEnumerator típusát vagy a kijelentett GetEnumerator módszert szeretnéd megvalósítani, ahogy a kérdésben felmerült, mit kellene tenned? Köszönöm Válasz: A foreach in használatakor általában rendszer-definiált gyűjteményosztályt használunk (az ICollection interfész megvalósításával). Például arrayList, stringDictionary, array stb. Ezeket a platform csomagolja, és közel állnak az IEnumerator interfész megvalósításához. Ahhoz, hogy az általad írt osztály egyszerre tudja forach-t használni, az interfészt meg kell valósítanod az osztály írásakor. Ez lehetővé teszi az egyes átmenetek későbbi szakaszát. Például definiáljunk egy emberosztályt, és valósítsuk meg az IEnumerator interfészt. Ha van egy People[] tempPeople tömb, akkor használhatod: foreach( p in tempPeople){ console.writeline(p.name); Ez megszünteti a for hurkok használatát. Ami az Iemumerator interfészt kell megvalósítani. Csak nézd meg az MSDN-t. Vastagabb könyvet is kereshetsz.
|