Int32.TryParse () devuelve cero en caso de error: ¿éxito o fracaso?

Leí esto de msdn sobre Int32.TryParse()

Cuando este método vuelve, contiene el valor entero con signo de 32 bits equivalente al número contenido en s, si la conversión tuvo éxito, o cero si la conversión falló.

Pero, ¿qué sucede si la cadena pasada es una representación de cadena de ‘0’? Así que el TryParse devolverá cero. ¿Cómo puedo saber si es un éxito o un fracaso?

No, TryParse devuelve verdadero o falso para indicar el éxito. El valor del parámetro de out se utiliza para el valor analizado, o 0 en caso de error. Asi que:

 int value; if (Int32.TryParse(someText, out value)) { // Parse successful. value can be any integer } else { // Parse failed. value will be 0. } 

Así que si pasas en “0”, ejecutará el primer bloque, mientras que si pasas en “número malo” ejecutará el segundo bloque.

El método devuelve un valor booleano que indica éxito o fracaso. Usa eso. El entero es un parámetro de referencia que se pasa al método y no tiene nada que ver con el valor de retorno del método.

Aquí está el prototipo de Int32.TryParse() de la documentación . Está muy claro que devuelve un booleano. El segundo parámetro es un out int que significa que el argumento se pasa por referencia, por lo que se muta con el método.

 public static bool TryParse( string s, out int result ) 

Para comprobar el éxito o el fracaso, haga esto:

 int value; if (Int32.TryParse("0", out value)) Console.WriteLine("Parsed as " + value); else Console.WriteLine("Could not parse"); 

El método Int32.TryParse() devuelve un valor boolean como retorno y proporciona el valor convertido como un parámetro de salida. Así que puedes verificar el valor boolean retorno para el estado.

 private static void TryToParse(string value) { int number; bool result = Int32.TryParse(value, out number); if (result) { Console.WriteLine("Converted '{0}' to {1}.", value, number); } else { if (value == null) value = ""; Console.WriteLine("Attempted conversion of '{0}' failed.", value); } } 

TryParse () devuelve un booleano.

  Int32 testInt; if (!Int32.TryParse("123", out testInt)) { MessageBox.Show("Is not a Int32!"); return; // abbrechen } MessageBox.Show("The parst Int32-value is " + testInt); 

usando C # 7 ahora puede declarar la variable dentro de TryParse como …

 if (Int32.TryParse(someText, out int value)) { // Parse successful. value can be any integer } else { // Parse failed. value will be 0. }