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"的操作数
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
}
您正在比较作为类型 string
的value
与类型 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)