基本上,我正在尝试检查textbox2.Text
是否包含任何不是整数的内容。这是一种非常低效的方式,但这是我能想到的唯一方法。有什么比我更好的了吗?
char[] ca = textBox2.Text.ToCharArray();
foreach (char c in ca)
{
string s = "1234567890";
char[] ca2 = s.ToCharArray();
if (c != ca2[0] && c != ca2[1] && c != ca2[2] && c != ca2[3] && c != ca2[4] &&
c != ca2[5] && c != ca2[6] && c != ca2[7] && c != ca2[8] && c != ca2[9])
{
MessageBox.Show("Non-integer detected in text box.");
EndInvoke(null);
}
}
int i = int.Parse(textBox2.Text);
答案 0 :(得分:2)
从你的代码开始,有一堆错误
0123456789
数组,你可以在循环之外完成这个char.IsDigit
char[] ca = textBox2.Text.ToCharArray();
foreach (char c in ca)
{
if(!char.IsDigit(c))
{
MessageBox.Show("Non-integer detected in text box.");
EndInvoke(null);
}
}
但你甚至不需要自己做循环,你可以使用Linq方法检查Any
元素是否满足布尔条件
var hasAnyNumbers = textBox2.Text.ToCharArray().Any(char.IsDigit);
但是那时你正试图将它解析成一个整数,所以我怀疑你的意思是"如何检查所有这些字符是整数&# 34; - 这是相反的
var isAllNumbers = textBox2.Text.ToCharArray().All(char.IsDigit);
但是,正如另一个答案所述 - 这是一种方法 - int.TryParse
。
答案 1 :(得分:1)