Para el registro, estoy probando dos códigos: que simplemente intenta convertir de una cadena a un número y si falla, asigne el número a cero.
if (!Int32.TryParse(txt,out tmpint)) {
tmpint = 0;
}
y:
try {
tmpint = Convert.ToInt32(txt);
} catch (Exception) {
tmpint = 0;
}
para C#, la mejor opción es utilizar TryParse porque tratan alternativa & Catch produce la excepción
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll
que es doloroso lento y no deseable, sin embargo , el código no se detiene a menos que se resuelva la excepción de Debug para detenerse con él.
"internamente, el método Parse llamará a TryParse" Excepto que Parse es anterior a TryParse en varias versiones. Por supuesto, podrían haber movido la implementación del núcleo a TryParse ... –
@Joel - Supuse que habrían movido la implementación, pero acabo de echar un vistazo con reflector y son implementaciones separadas con * exactamente * el mismo código que no sea uno tiene 'throw ...' y uno tiene 'return false'. Me pregunto por qué no están consolidados? –
Aunque, pensando en ello, Parse arroja una serie de excepciones diferentes, así que si todo lo que tenía era un bool de TryParse, entonces no sabría cuál lanzar. –