¿Cuál es la diferencia entre Parse () y TryParse ()?
int number = int.Parse(textBoxNumber.Text);
// The Try-Parse Method
int.TryParse(textBoxNumber.Text, out number);
¿Existe alguna forma de verificación de errores como un bloque Try-Catch?
Parsearroja una excepción si no puede analizar el valor, mientras que TryParsedevuelve un que boolindica si tuvo éxito.
TryParseno solo try/ catchinternamente, el punto es que se implementa sin excepciones para que sea rápido. De hecho, la forma más probable de implementarlo es que internamente el Parsemétodo llamará TryParsey luego lanzará una excepción si regresa false.
En pocas palabras, utilícelo Parsesi está seguro de que el valor será válido; de lo contrario utilizar TryParse.
Si la cadena no se puede convertir a un número entero, entonces
int.Parse()lanzará una excepciónint.TryParse()devolverá falso (pero no lanzará una excepción)fuente
El método TryParse le permite probar si algo es analizable. Si prueba Parse como en la primera instancia con un int no válido, obtendrá una excepción mientras está en TryParse, devuelve un booleano que le permite saber si el análisis tuvo éxito o no.
Como nota al pie, pasar nulo a la mayoría de los métodos TryParse generará una excepción.
fuente
TryParse y el impuesto de excepción
Parse lanza una excepción si falla la conversión de una cadena al tipo de datos especificado, mientras que TryParse evita explícitamente lanzar una excepción.
fuente
TryParse no devuelve el valor, devuelve un código de estado para indicar si el análisis se realizó correctamente (y no lanza una excepción).
fuente
Para que conste, estoy probando dos códigos: que simplemente intentan convertir de una cadena a un número y, si falla, asignan el número a cero.
y:
Para c #, la mejor opción es usar tryparse porque la alternativa try & Catch lanzó la excepción
Que es doloroso lento e indeseable, sin embargo, el código no se detiene a menos que la excepción de Debug se establezca para detenerse con él.
fuente
Sé que es una publicación muy antigua, pero pensé en compartir algunos detalles más sobre Parse vs TryParse.
Tuve un escenario en el que DateTime debe convertirse a String y si datevalue null o string.empty nos enfrentamos a una excepción. Para superar esto, hemos reemplazado Parse con TryParse y obtendremos la fecha predeterminada.
Código antiguo:
Nuevo código:
Tiene que declarar otra variable y usarla como Salida para TryParse.
fuente
startDateyendDatecomoDateTime.TryParsesiempre los sobrescribirá conDateTime.MinValue. Si las representaciones de fecha incorrectas deben convertirse a un valor diferente, verifique el valor de retorno deDateTime.TryParsey si es falso, establezca el valor explícitamente.DateTime?( DateTime anulable )double.Parse ("-"); genera una excepción, mientras que double.TryParse ("-", analizado); analiza a 0, así que supongo que TryParse hace conversiones más complejas.
fuente
TryParsevuelvetrueofalse? Así sabrá si era "válido".