2010-06-17 5 views
8

Я пишу класс IEnumerator<T> для итерации по COM коллекции Я wrappering. Я заметил, что IEnumerator<T> расширяет IDisposable, поэтому мне необходимо реализовать метод Dispose.IEnumerator: Нормально ли иметь пустой метод Dispose?

Однако, я не могу думать ни о чем я бы поставил там, как и у меня есть только ссылки на коллекции (которые я бы не хотел быть расположен в конце foreach), и int для индекса , Нормально ли оставить метод Dispose пустым?

ответ

15

Да, это так.

IEnumerator<T> инвентарь IDisposable в случае, если вы сделаете перечислитель, который необходимо утилизировать. Поскольку большинство счетчиков не нужно удалять, метод обычно будет пустым.

Кстати, вы можете реализовать свой IEnumerator проще на creating an iterator.

+0

Спасибо за напоминание о 'yield'. Я думал, что есть более простой способ. –

+2

Кстати, 'yield' является одной из причин, по которым' IEnumerator 'реализует' IDisposable' - инструкция 'using' или' finally' переходит в 'Dispose'. – SLaks

+0

Для пользователей VB.NET обратите внимание, что для «Yield» требуется Visual Studio 2012 или выше. – jrh

Смежные вопросы