Как правильно выбрать способ IEnumerator.Reset
?
В документации написано:
Метод
Reset
предоставляется для взаимодействия COM. Это необязательно должно быть реализовано; вместо этого разработчик может просто выброситьNotSupportedException
.
Хорошо, значит ли это, что я не должен когда-либо называть его?
Это настолько соблазнительно использовать исключения для управления потоком:
using (enumerator = GetSomeExpensiveEnumerator())
{
while (enumerator.MoveNext()) { ... }
try { enumerator.Reset(); } //Try an inexpensive method
catch (NotSupportedException)
{ enumerator = GetSomeExpensiveEnumerator(); } //Fine, get another one
while (enumerator.MoveNext()) { ... }
}
Это то, как мы должны использовать его? Или мы не должны использовать его из управляемого кода?