2009-04-02 6 views

ответ

11

Очевидно,

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

Можете ли вы «вернуть True» где-то в этом? – Pondidum

+0

@Pondidum: Хороший звонок! Благодарю. –

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

ли не исключением метания/обработки создать справедливый бит накладных расходов, хотя? –

1

Koistya почти был. Нет команды var в .NET 1.1.

Если я могу быть настолько смелым:

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

Существует TryParse для двойной, так что если вы используете это, выберите опцию «NumberStyles.Integer» и убедитесь, что в результате двойного находится в пределах границ Int32, вы можете определить, является ли строка целым, не выбрасывая исключение.

надеюсь, что это помогает, 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; 
    } 
} 
Смежные вопросы