Проблема перечислителя, есть ли способ избежать двух циклов? - PullRequest
3 голосов
/ 18 июня 2010

У меня есть сторонний API, у которого есть класс, который возвращает перечислитель для различных элементов в классе.

Мне нужно удалить элемент в этом перечислителе, поэтому я не могу использовать «для каждого».Единственный вариант, который я могу придумать, - это получить счет путем итерации по перечислению, а затем запустить нормальный цикл for для удаления элементов.

Кто-нибудь знает способ избежать двух циклов?

Спасибо

[обновление] извините за путаницу, но Андрей ниже в комментариях прав.

Вот какой-то псевдокод из моей головы, который не будет работать идля которого я ищу решение, которое не будет включать два цикла, но я думаю, что это невозможно:

for each (myProperty in MyProperty)
{
if (checking some criteria here)
   MyProperty.Remove(myProperty)
}

MyProperty - это сторонний класс, который реализует перечислитель и метод удаления.

Ответы [ 11 ]

0 голосов
/ 18 июня 2010

IEnumerator.Count () решит во время выполнения, что ему нужно сделать - перечислить, чтобы подсчитать или отразить, чтобы увидеть, что это коллекция, и вызвать .Count таким образом.

Мне нравится предложение SJoerd, но я беспокоюсь о том, сколько предметов мы можем говорить.

...