Domanda

Com'è esattamente il modo giusto di chiamare IEnumerator.Reset?

La documentazione dice:

Il Reset Il metodo è fornito per l'interoperabilità COM. Non deve necessariamente essere implementato; Invece, l'implementatore può semplicemente lanciare un NotSupportedException.

Ok, così significa che non dovrei mai chiamarlo?

È Così allettante di utilizzare le eccezioni per il controllo del flusso:

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

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

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

È così che dovremmo usarlo? O non dobbiamo usarlo dal codice gestito?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top