C# 中的>和<问题

本文关键字:问题 中的 | 更新日期: 2023-09-27 18:32:48

我制作的一小段代码有问题。对于代码,我必须做一个小检查。当_mmdTextBox的值大于 1999 时,它应该给出一个MessageBx.Show("Value to high")。如果该值小于 0,则应该有一个MessageBox.Show("Value to low")

这是我到目前为止所做的:

private void _mmdButton_Click(object sender, EventArgs e)
{
    var value = _mmdTextBox.Text;
    if (value > 1999 && value < 0)
    {
         MessageBox.Show("Value is to high");
    }
    else
    {
       // action
    }
}

这是我像上面的代码一样执行时遇到的错误:

错误 1 运算符">"不能应用于类型为"string"和"int"的操作数

C# 中的>和<问题

int value;
if(Int32.TryParse(_mmdTextBox.Text, out value)
{
    if (value > 1999)
    {
        MessageBox.Show("Value is too high");
    }
    else if(value < 0)
    {
        MessageBox.Show("Value is too low");
    }
    else
    {
        // action
    }
}
else
{
    // not a number
}

TextBox.Text 返回string 。所以你的value将是字符串。不能使用 <> 运算符将字符串与整数进行比较。

来自MSDN;

所有数值和枚举类型都定义...。

尝试将您的value转换为int(如果可用)。

int value;
if(Int32.TryParse(_mmdTextBox.Text, out value)
{
    if (value > 1999)
    {
         MessageBox.Show("Value is too high");
    }
    if(value < 0)
    {
         MessageBox.Show("Value is too low");
    }
}

C# 是一种强类型语言,如果要比较 2 个值。它们应该是相同的类型。所以你需要将文本框文本转换为int,你还需要验证以确保来自文本机器人的值是int ok

我以为这会对你有很大帮助

您的if语句可以更改为如下所示:

var value = Convert.ToInt32(_mmdTextBox.Text);  //Convert to int in order to compare against an int
if (value > 1999)
{
     MessageBox.Show("Value is to high");
}
else if (value < 0)
{
     MessageBox.Show("Value is to low");
}
else
{
    //Action
}

您正在比较作为类型 stringvalue与类型 int

int.TryParse()将是int转换的更好选择,因为用户可以输入任何内容。 (就像Erno De Weerd的回答一样)

您正在比较string _mmdTextBox.Text类型为 int 的常量!这不可能!您应该将前者转换为int

   int value;
   if(!int.TryParse(_mmdTextBox.Text, out value)) 
   {
       MessageBox.Show("Bad integer value in textbox");
       return;
   }

怎么能> 1999 和 <0 ?

TryParse 可能更适合您的转换,但这应该有效:

private void _mmdButton_Click(object sender, EventArgs e)
        {
            var value = Convert.ToInt32(_mmdTextBox.Text);
            if (value > 1999)
            {
                MessageBox.Show("Value is too high");
            }
            else if (value < 0)
            {
                MessageBox.Show("Value is too low");
            }
            else
            {
                MessageBox.Show("Value is ok");
            }
        }

你的问题是,该值是一个字符串而不是一个数字。您可以使用 Parse 或 TryParse 来解决它。

如果要使用.TryParse()使其看起来像 MSDN 中的此示例:

int number;
bool result = Int32.TryParse(value, out number);
if (result)
{
    if (number > 1999 || number < 0)
    {
       MessageBox.Show("Value is invalid");
    }
    else
    {
       // action
    }
}
else
{
   //Show that the input is not a numeric value
}

尝试代替你的 if 条件

if (Convert.ToInt32(value) > 1999 && !Convert.ToInt32(value)< 0)