"<=是无效的表达术语"和")预期"

h3h*_*alf 1 c#

我正在搞乱C#并且正在制作一个原型GUI(没有附加游戏,只是弄乱了按钮和按钮颜色).我遇到了一个错误:

private void temperValue_Load(object sender, EventArgs e)
    {
        int temperInt = 23;
        temperInt = Convert.ToInt32(temperValue.Text);

        if (temperInt >= 70)
        {
            temperButton.BackColor = System.Drawing.Color.Red;
        }
        else if (temperInt >= 40 & <= 69)
        {
            temperButton.BackColor = System.Drawing.Color.DarkOrange;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在"else if"行中,"<="和"69"都有错误."<="错误是"无效的表达式术语'<='","69)"的四个错误是")预期的","无效的表达式术语')'",以及两个"预期的"错误.

此代码片段之外没有任何变量影响此代码.调用的每个变量都在片段内定义.

(对于任何好奇的人,"脾气"代表"温度")

Kir*_*oll 7

你不能在你的布尔条件下采取快捷方式.

else if (temperInt >= 40 & <= 69)
Run Code Online (Sandbox Code Playgroud)

必须写成:

else if (temperInt >= 40 && temperInt <= 69)
Run Code Online (Sandbox Code Playgroud)

请注意,进行布尔比较时,通常需要使用双&符号&&.这会导致短路(如果左侧成功,则仅评估两侧),这通常是所需的.正如我所说,你需要同时包含temperInt标识符 - 你不能说"某个变量大于一个值而不是另一个变量",就像在SQL BETWEEN子句中一样.

更新:根据Eric的建议修正了答案.

  • @ h3half:这个答案的最后一段是不正确的.它不是*&`和`|`不能用于布尔的情况.这是完全合法的; 试试吧!区别在于`|`总是评估两半.如果左半部分为真,`||`跳过评估右半部分.类似地,对于`&&`--如果左半部分为假,则不评估右半部分.但是说运营商不适用于布尔是完全错误的; 他们当然这样做. (3认同)