我有一个文本框,我希望人们输入一个不是0且小于5的整数(不是双精度)。变量numofitems
存储文本框的值,当你按下按钮时,它会将它转换为int并测试它是否符合我想要的要求。这是我的代码:
private void button1_Click(object sender, EventArgs e)
{
string numofitems = textBox1.Text;
int x = 0;
if (Int32.TryParse(numofitems, out x) && numofitems !=0 && numofitems <=5)
{
//it is valid
}
}
虽然,它说:
operator!=不能应用于'string'和'int'的操作数。
我该如何解决这个问题?我不想先测试它的价值,因为人们可以在文本框中输入00
,它会起作用。谢谢!
答案 0 :(得分:5)
您正在使用错误的变量进行测试。转换后的结果int
值将在x
中!所以你需要查看x
。当您尝试将字符串转换为数字时,numofitems
保持不变(尤其是类型)。
解决方案如下所示:
if (Int32.TryParse(numofitems, out x) && x !=0 && x <=5)
{
//it is valid
}
PS。如果你的意思是项目的数量应该在0到5之间,我建议像这样检查:
if (Int32.TryParse(numofitems, out x) && x > 0 && x <=5)
否则你允许负数!
仅供参考:documentation对第二个参数out x
当此方法返回时,[第二个参数]包含等效于s [第一个/字符串参数]中包含的数字的32位有符号整数值,如果转换成功,
答案 1 :(得分:1)
Int32.TryParse
将数字的字符串表示形式转换为等效的32位有符号整数。返回值表示转换是否成功。您的值在X
。
private void button1_Click(object sender, EventArgs e)
{
string numofitems = textBox1.Text;
int x = 0;
if (Int32.TryParse(numofitems, out x) && x > 0 && x <= 5)
{
//it is valid
}
}
详细了解Docs
中的Int32.TryParse
答案 2 :(得分:0)
实际值设置为out参数。
if (Int32.TryParse(numofitems, out x) && x !=0 && x <=5)
{
//it is valid
}
答案 3 :(得分:0)
您的支票应如下所示:
if (Int32.TryParse(numofitems, out x) && x!=0 && x<=5)
{
//it is valid
}
答案 4 :(得分:0)
这是因为您声明了string numofitems
,然后将string
与int
进行了比较。
你的代码应该是:
private void button1_Click(object sender, EventArgs e)
{
string numofitems = textBox1.Text;
int x = 0;
if (Int32.TryParse(numofitems, out x) && x > 0 && x <= 5)
{
//it is valid
}
}
请注意,如果您希望数字介于 0和5(正数)之间,则第一次比较应为x > 0
。