TryParse一个字符串,然后测试它的价值

时间:2017-03-03 16:00:09

标签: c#

我有一个文本框,我希望人们输入一个不是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,它会起作用。谢谢!

5 个答案:

答案 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,然后将stringint进行了比较。 你的代码应该是:

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