Ho una classe con un'API che mi consente di chiedere oggetti finché non getta un IndexOutOfBoundsException
.iteratore .NET per avvolgere l'API di lancio
Voglio inserirlo in un iteratore, per poter scrivere codice più pulito. Tuttavia, ho bisogno di catturare l'eccezione di fermare l'iterazione:
static IEnumerable<object> Iterator(ExAPI api) {
try {
for(int i = 0; true; ++i) {
yield return api[i]; // will throw eventually
}
}
catch(IndexOutOfBoundsException) {
// expected: end of iteration.
}
}
Ma ...
Quando viene utilizzato con l'espressione, una dichiarazione dei rendimenti non può apparire in un blocco cattura o in una prova blocco che ha una o più clausole di cattura. Per ulteriori informazioni su , consultare Gestione delle eccezioni. Dichiarazioni (riferimento C#) .Statements (riferimento C#). (dal msdn)
Come posso ancora avvolgere questa API?
@Coding Gorilla: questo è il punto: no. Inizia da zero e sale. – xtofl