Компания, которая останется неназванной, имеет метод IFormsCollection.GetForms("ObjectIndex") || IFormsCollection.GetForms(0)
, который генерирует исключение, если форма не находится в коллекции. Это не IEnumerable<form>
и требуется либо for()
, либо .GetEnumerator()
->while()
, чтобы получить каждый элемент в списке.Ловля исключения по сравнению с циклом по коллекции (менее глупый способ)
Вопрос в том, следует ли мне каждый раз перебирать коллекцию IForms? Мне нужно найти форму, которая не будет там в большинстве случаев, или просто пропустить цикл и предположить, выбрасывает ли исключение, которого там нет? Я бы предпочел не поддерживать вторую коллекцию, которая IENumerable для удобства поиска.
'Не используйте исключения для нормального потока управления, если это возможно. 'From [Exception Throwing - MSDN] (http: // msdn. microsoft.com/en-us/library/vstudio/ms229030(v=vs.100).aspx) – Habib
Не создавайте вторую коллекцию, создайте обертку вокруг этой коллекции, которая * делает * реализует IEnumerable –
Обратите внимание, что вы все равно можете использовать объект в цикле 'foreach', если он не реализует' IEnumerable 'или' IEnumerable'. Спецификация требует только того, что у него есть метод «GetEnumerator», у возвращаемого типа которого есть свойство «Current» и метод MoveNext, возвращающий 'bool'. –