Jawaban: Objek yang dapat dilalui oleh foreach harus berupa objek koleksi atau array, yang merupakan jenis yang mengimplementasikan superinterface IEnumerator atau metode GetEnumerator yang dideklarasikan Q: Tetapi ketika saya biasanya menggunakan foreach in, saya menggunakannya secara langsung, dan tidak ada masalah. Bolehkah saya bertanya, mengapa demikian? Jika Anda ingin mengimplementasikan jenis antarmuka super IEnumerator atau metode GetEnumerator yang dideklarasikan seperti yang diajukan dalam pertanyaan, apa yang harus Anda lakukan? Terima kasih Jawaban: Saat menggunakan foreach in, kami biasanya menggunakan kelas koleksi yang ditentukan sistem (mengimplementasikan antarmuka ICollection). Misalnya, arrayList, stringDictionary, array, dll. Ini dikemas oleh platform dan hampir mengimplementasikan antarmuka IEnumerator. Agar kelas yang Anda tulis dapat foreach pada saat yang sama, Anda harus mengimplementasikan antarmuka saat menulis kelas. Ini memungkinkan untuk setiap traversal setelahnya. Misalnya, tentukan kelas orang dan terapkan antarmuka IEnumerator. Jika ada array People[] tempPeople, maka Anda dapat menggunakan: foreach( p di tempPeople){ console.writeline(p.name); Ini menghilangkan masalah menggunakan loop for. Adapun cara mengimplementasikan antarmuka Iemumerator. Periksa saja MSDN. Anda juga dapat mencari buku yang lebih tebal.
|