2009-04-02 24 views

Respuesta

11

Obviamente,

class Int32Util 
{ 
    public static bool TryParse(string value, out int result) 
    { 
     result = 0; 

     try 
     { 
      result = Int32.Parse(value); 
      return true; 
     } 
     catch(FormatException) 
     {    
      return false; 
     } 

     catch(OverflowException) 
     { 
      return false; 
     } 
    } 
} 
+0

¿Podría querer 'devolver True' en alguna parte de eso? – Pondidum

+0

@Pondidum: ¡Buena llamada! Gracias. –

2
try 
{ 
    var i = int.Parse(value); 
} 
catch(FormatException ex) 
{ 
    Console.WriteLine("Invalid format."); 
} 
+1

¿Acaso el lanzamiento de excepción/manejo de crear un poco de sobrecarga sin embargo? –

1

Koistya casi lo tenía. Sin comando var en .NET 1.1.

Si me permite el atrevimiento:

try 
{ 
    int i = int.Parse(value); 
} 
catch(FormatException ex) 
{ 
    Console.WriteLine("Invalid format."); 
} 
1

Hay una TryParse para el doble, por lo que si se utiliza, elija la opción "NumberStyles.Integer" y compruebe que la doble resultante está dentro de los límites de Int32, puede determinar si la cadena es un número entero sin lanzar una excepción.

esperanza que esta ayuda, Jamie

private bool TryIntParse(string txt) 
{ 
    try 
    { 
     double dblOut = 0; 
     if (double.TryParse(txt, System.Globalization.NumberStyles.Integer 
     , System.Globalization.CultureInfo.CurrentCulture, out dblOut)) 
     { 
      // determined its an int, now check if its within the Int32 max min 
      return dblOut > Int32.MinValue && dblOut < Int32.MaxValue; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    catch(Exception ex) 
    { 
     throw ex; 
    } 
} 
Cuestiones relacionadas