Tengo un poco de código con la siguiente lógica:¿Qué hacer cuando se usa Contract.Assert (true) y el método debe devolver algo?
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
En teoría, siempre hay un elemento que es lo que sea, por lo que este método debería plantear ningún problema. En cualquier caso, he puesto una afirmación sobre el final del método sólo para estar seguro:
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
Contract.Assert(false, "Invalid state!");
El problema es que a medida que este método tiene que devolver algo, y el compilador no entiende que la afirmación romperá la ejecución del programa. Antes de usar contratos, en este tipo de situaciones solía arrojar una excepción que resolvía el problema. ¿Cómo manejarías esto con Contract.Assert()? ¿Regresar nulo o por defecto (element_type) después de la llamada Contract.Assert() sabiendo que nunca se llamará y se cerrará el compilador? ¿O hay alguna otra manera más elegante de hacer esto?
Gracias
No quiere decir 'Contract.Assert ("Estado inválido!" False);'? –
Sí, lo hice. : facep: –