¿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?
Parse
arroja una excepción si no puede analizar el valor, mientras que TryParse
devuelve un que bool
indica si tuvo éxito.
TryParse
no solo try
/ catch
internamente, 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 Parse
método llamará TryParse
y luego lanzará una excepción si regresa false
.
En pocas palabras, utilícelo Parse
si 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
startDate
yendDate
comoDateTime.TryParse
siempre los sobrescribirá conDateTime.MinValue
. Si las representaciones de fecha incorrectas deben convertirse a un valor diferente, verifique el valor de retorno deDateTime.TryParse
y 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
TryParse
vuelvetrue
ofalse
? Así sabrá si era "válido".