Отговор: Обектите, които могат да бъдат преминавани от foreach, трябва да са колективни или масивни обекти, които са от типа, който реализира суперинтерфейса IEnumerator или декларирания метод GetEnumerator Q: Но когато обикновено използвам Foreach In, го използвам директно и няма проблем. Може ли да попитам, защо е така? Ако искате да реализирате типа супер интерфейс IEnumerator или декларирания метод GetEnumerator, както е зададено в въпроса, какво трябва да направите? Благодарим ви Отговор: Когато използваме foreach in, обикновено използваме системно дефиниран клас за колекция (реализиращ интерфейса ICollection). Например, arrayList, stringDictionary, array и др. Те са пакетирани от платформата и са близо до реализирането на интерфейса IEnumerator. За да може класът, който пишете, да се адаптира едновременно, трябва да приложите интерфейса при писането на курса. Това позволява преминаване на форича след това. Например, дефинирайте клас хора и имплементирайте интерфейса IEnumerator. Ако има масив People[] tempPeople, тогава можете да използвате: foreach( p in tempPeople){ console.writeline(p.name); Това елиминира неудобството с използването на for цикли. Що се отнася до това как да се реализира интерфейсът на Iemumerator. Просто провери MSDN. Можеш също да потърсиш по-дебела книга.
|