Parse v. TryParse

¿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); 

¿Hay alguna forma de comprobación de errores como un bloque Try-Catch?

    Parse arroja una excepción si no puede analizar el valor, mientras que TryParse devuelve un bool indica si tuvo éxito.

    TryParse no solo try / catch internamente: el objective es que se implemente sin excepciones para que sea rápido. De hecho, la forma más probable de implementarlo es que internamente el método Parse llamará a TryParse y luego lanzará una excepción si devuelve false .

    En pocas palabras, use Parse si está seguro de que el valor será válido; de lo contrario, use TryParse .

    Si la cadena no se puede convertir a un número entero, entonces

    • int.Parse () lanzará una excepción
    • int.TryParse () devolverá falso (pero no lanzará una excepción)

    El método TryParse le permite probar si algo es parseable. Si prueba Parse como en la primera instancia con un int no válido, obtendrá una excepción mientras está en el TryParse, devuelve un booleano que le permite saber si el análisis tuvo éxito o no.

    Como nota al pie, al pasar nulo a la mayoría de los métodos TryParse arrojará una excepción.

    TryParse y el Impuesto de Excepción

    Parse arroja una excepción si la conversión de una cadena al tipo de datos especificado falla, mientras que TryParse explícitamente evita lanzar una excepción.

    TryParse no devuelve el valor, devuelve un código de estado para indicar si el análisis tuvo éxito (y no lanza una excepción).

    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 usar tryparse porque try & Catch alternative lanzó la excepción

     A first chance exception of type 'System.FormatException' occurred in mscorlib.dll 

    Sin embargo, el hecho de que sea doloroso, lento e indeseable, no se detiene a menos que se resuelva la excepción de Debug para detenerlo.

    Sé que es una publicación muy antigua, pero pensé en compartir algunos detalles más sobre Parse vs TryParse.

    Tenía un escenario en el que DateTime debe convertirse a String y si datevalue null o string.empty estamos ante una excepción. Para superar esto, hemos reemplazado a Parse con TryParse y obtendremos la fecha predeterminada.

    Código antiguo:

     dTest[i].StartDate = DateTime.Parse(StartDate).ToString("MM/dd/yyyy"); dTest[i].EndDate = DateTime.Parse(EndDate).ToString("MM/dd/yyyy"); 

    Nuevo código:

     DateTime startDate = default(DateTime); DateTime endDate=default(DateTime); DateTime.TryParse(dPolicyPaidHistories[i].StartDate, out startDate); DateTime.TryParse(dPolicyPaidHistories[i].EndDate, out endDate); 

    Tiene que declarar otra variable y usarla como Out para TryParse.

    double.Parse (“-“); genera una excepción, mientras que double.TryParse (“-“, out analizado); se analiza en 0, así que supongo que TryParse realiza conversiones más complejas.