运算符'>'不能应用于类型'bool'和'bool'的操作数
我已经反向设计了这个应用程序,我已经丢失了源代码并且无法克服构建应用程序时引发的此错误。运算符'>'不能应用于类型'bool'和'bool'的操作数
错误:"Operator '>' cannot be applied to operands of type 'bool' and 'bool' "
上线
this.ListBox1.SelectedIndex = ((-(((this.ListBox1.SelectedIndex == 1) > false) ? 1 : 0)) ? 1 : 0);
凡
this.ListBox1.SelectedIndex == 1) > false
任何帮助,将不胜感激。谢谢!
你的错误消息说,这一切
Operator '>' cannot be applied to operands of type 'bool' and 'bool'
有在C#中的布尔没有等级的概念。两个布尔值要么相等,要么不相等。
如果你想获得其中
this.ListBox1.SelectedIndex == 1
是不正确的情况下,改用
this.ListBox1.SelectedIndex != 1
例如
this.ListBox1.SelectedIndex = (this.ListBox1.SelectedIndex != 1) ? 0 : 1;
或等效,可能更容易阅读
this.ListBox1.SelectedIndex = (this.ListBox1.SelectedIndex == 1) ? 1 : 0;
如果代码已经是1,则此代码将保留所选索引为1,并将其设置为0作为其他任何值。
你可以对这个答案做一个补充,就是建议评估一个bool以获得1或0并不是一件好事;直接使用布尔值即可。 –
@DavidArno:他实际上并不想要一个bool,他想要一个新的SelectedIndex值,它是一个int。 –
括号不是必需的。 – phoog
使用此:
((this.ListBox1.SelectedIndex == 1) != false)
双重底片不是非常易于维护。 –
不会低估'!= false',但它是一种确定的代码味道。 –
好的。我还没有遇到任何问题。我需要了解为什么它不是一个好的做法.. –
TRUE;比较比'FALSE',所以'> FALSE'等同于'= FALSE',您可以只是删除==>删除整个'更大>虚假“部分。 –
@LucasTrzesniewski:我不确定哪些语言允许在两个布尔值之间进行有序比较,但不是C#。 –
@EricJ。它在语言语法中是不允许的,但'Comparer.Default'将执行我描述的比较。这是一个C#限制,它在IL中是允许的。 –