我需要函数,只需检查是否可以将字符串转换为有效整数(用于表单验证)。
在搜索之后,我最终使用了2002年的一个函数,它使用C#1(下面)。
然而,在我看来,虽然下面的代码有效,但误用try / catch 来使用它不是为了捕获错误而是为了确定一个值。
在C#3中有更好的方法吗?
public static bool IsAValidInteger(string strWholeNumber)
{
try
{
int wholeNumber = Convert.ToInt32(strWholeNumber);
return true;
}
catch
{
return false;
}
}
John的答案帮助我构建了我没有try / catch的功能。在这种情况下,空白文本框也被视为我的表单中的有效“整数”:
public static bool IsAValidWholeNumber(string questionalWholeNumber)
{
int result;
if (questionalWholeNumber.Trim() == "" || int.TryParse(questionalWholeNumber, out result))
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:33)
if (int.TryParse(string, out result))
{
// use result here
}
答案 1 :(得分:11)
这可能不会快得多,但至少它看起来更干净(没有异常处理):
public static bool IsAValidInteger(string strWholeNumber)
{
int wholeNumber;
return int.TryParse(strWholeNumber, out wholeNumber);
}
答案 2 :(得分:6)
您正在寻找Int32.TryParse()。
public void Foo(String input)
{
Int32 number;
if (Int32.TryParse(input, out number))
{
DoStuff(number);
}
else
{
HandleInvalidInput(input);
}
}
在您的具体情况下,我会使用以下内容。
public static Boolean IsValidInt32(String input)
{
Int32 number;
return Int32.TryParse(input, out number);
}
答案 3 :(得分:5)
Int32.TryParse
答案 4 :(得分:-4)
try / catch方法是一种有效的解决方案,因为对于许多类型,没有实现TryParse方法。所以你回到基本上只有一个选项。