Ответ: Объекты, которые можно обходить foreach, должны быть объектами коллекции или массива, которые относятся к типа, реализующему суперинтерфейс IEnumerator или заявленный метод GetEnumerator Q: Но когда я обычно использую Foreach In, я использую его напрямую, и проблем нет. Можно спросить, почему так? Если вы хотите реализовать тип суперинтерфейса IEnumerator или заявленный метод GetEnumerator, как сказано в вопросе, что вам следует делать? Спасибо Ответ: При использовании foreach in мы обычно используем класс коллекции, определённый системой (реализующий интерфейс ICollection). Например, arrayList, stringDictionary, массив и т.д. Они упаковываются платформой и близки к реализации интерфейса IEnumerator. Чтобы класс, который вы пишете, мог одновременно использовать Foreach, необходимо реализовать интерфейс при написании курса. Это позволяет перемещаться по форичу после этого. Например, определите класс людей и реализуйте интерфейс IEnumerator. Если существует массив People[] tempPeople, то можно использовать: foreach( p in tempPeople){ console.writeline(p.name); Это устраняет проблему использования фор-петлей. Что касается реализации интерфейса Iemumerator. Просто проверьте MSDN. Также можно искать более толстую книгу.
|