在C#中测试值是否为数值的正确方法

Joe*_*Joe 6 .net c#

我只需要知道值是否为数字.我不需要对价值做任何事情.这是最好的方法吗?感觉很脏,创建一个我将永远不会使用的变量:

int val;
if(int.TryParse(txtFoo.Text, out val))
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 3

是的,使用相关TryParse方法并忽略out参数是最好的方法。

您可能希望将其包装到您自己的一组辅助方法中(如果默认值不适合您,则可以指定适当的区域性等)并仅返回bool不带out参数的 a 以使它们更易于调用。

当然,您需要弄清楚哪种解析是最合适的 - 即使对于整数,您也需要考虑 的范围是否Int32足以满足您的用例。根据我的经验,大多数数字输入都有其自己的“自然”有效值范围,这不太可能恰好是任何预定义类型的范围。因此,您可能希望扩展辅助方法以包含要接受的有效值的范围。

  • @LukeH:是的,但是`BigInteger`“变成了11”。 (2认同)
  • @C。劳伦斯·温纳姆:喜欢。如果有一种语言,普通整数类型只能处理 [-10, 10],而 BigInteger 可以处理 11,这不是很棒吗? (2认同)