是否有Int.isWholeNumber()函数或类似的东西?

我需要检查输入是否为int。 是否有与String.IsNullOrEmpty()类似的函数,就像Int.isWholeNumber()函数一样?

有没有办法在if()语句中validation这个,而不必在之前声明一个int? (正如你需要使用TryParse())

编辑
我需要validation区号(五个数字)

我不相信在BCL中有任何这样的方法,但是很容易写一个(我假设你真的在谈论字符串是否可以被解析为整数):

 public static bool CanParse(string text) { int ignored; return int.TryParse(text, out ignored); } 

根据需要添加接受IFormatProvider值等的重载。 假设这是用于validation,您可能希望将其展开以允许指定一系列有效值…

如果您正在进行大量自定义validation,您可能希望查看Fluentvalidation项目。

我从您的评论中收集到您的实际问题是“如何确定此字符串是否包含有效的瑞典邮政编码?” 瑞典邮政编码是一个五位数字,不以零开头。 如果这是您实际需要解决的问题,那么解决该问题 。 而不是尝试将字符串转换为整数,然后检查整数,我只是写支票说:

  • 字符串长五个字符? 如果没有,拒绝它。
  • 字符串1,2,3,4,5,6,7,8或9的第一个字符是什么? 如果没有,拒绝它。
  • 是字符串0,1,2,3,4,5,6,7,8或9的第二,第三,第四和第五个字符? 如果没有,拒绝它。

就那么简单。 如果你永远不打算对它进行数学运算,那么首先不要将它转换为整数。

这种方法将进一步推广到更复杂的forms。 我收集的瑞典邮政编码通常以“SE-12 345”的forms编写,即带有前缀“SE-”和数字2和3之间的空格。 编写一个处理该格式的整数validation例程将会非常困难,但编写字符串validation例程非常简单。

更一般地说,这说明了一些写问题的好建议。 问一个你实际必须解决的问题 。 您假设了一个解决方案 – 将字符串解析为整数 – 然后开始询问有关您的假设解决方案的问题。 这会自动阻止任何人提供特定于您真实问题的建议。 也许读过这个的人已经开发了一个邮政编码validation软件库; 如果他们有,他们永远不会知道从你原来的问题告诉你。

您可以通过扩展方法实现此目的:

你用

 bool isNumber = "-1990".IsNumber(); 

这是代码:

 public static class NumberStringExtension { public static bool IsNumber(this string value) { int i = 0; return int.TryParse(value, out i)); } } 

看看int.TryParse是否给出了答案,并确保输入字符串中没有小数点。 (如果有人输入“1”作为输入,这将给你误报。)

 string input; int ignored; bool wholeNumber = int.TryParse(input, out ignored) && input.indexOf('.') == -1; 

使用Int.TryParse或创建自定义函数。

 function bool IsNumber(object number) { try { Convert.ToInt32(number.ToString()); return true; } catch { return false; } } 

根据定义,int类型必须是整数。 它必须是double,float或decimal类型才能是非整数。 您始终可以尝试测试输入的类型。

或者输入是字符串? 如果输入是字符串,您可以尝试搜索“。” 或’,’字符(取决于文化)。 或者您可以尝试解析为整数。

由于每个int都是一个整数,这很容易:

 public static bool IsWholeNumber(int i) { return true; } 

如果您只想在if语句中validation它,您可以这样做

 If ( val % 1 > 0) //not whole number