Question

Quelle est exactement la bonne façon d'appeler IEnumerator.Reset?

La documentation dit:

La Reset La méthode est fournie pour l'interopérabilité COM. Il n'a pas nécessairement besoin d'être mis en œuvre; Au lieu de cela, l'implémentateur peut simplement lancer un NotSupportedException.

D'accord, cela signifie-t-il que je ne suis pas censé l'appeler?

C'est alors tentant d'utiliser des exceptions pour le contrôle du débit:

using (enumerator = GetSomeExpensiveEnumerator())
{
    while (enumerator.MoveNext()) { ... }

    try { enumerator.Reset(); } //Try an inexpensive method
    catch (NotSupportedException)
    { enumerator = GetSomeExpensiveEnumerator(); } //Fine, get another one

    while (enumerator.MoveNext()) { ... }
}

Est-ce ainsi que nous sommes censés l'utiliser? Ou ne sommes-nous pas destinés à l'utiliser à partir du code géré?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top