2015-07-20 350 views
0

我已经反向设计了这个应用程序,我已经丢失了源代码并且无法克服构建应用程序时引发的此错误。运算符'>'不能应用于类型'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 

任何帮助,将不胜感激。谢谢!

+1

TRUE;比较比'FALSE',所以'> FALSE'等同于'= FALSE',您可以只是删除==>删除整个'更大>虚假“部分。 –

+0

@LucasTrzesniewski:我不确定哪些语言允许在两个布尔值之间进行有序比较,但不是C#。 –

+1

@EricJ。它在语言语法中是不允许的,但'Comparer .Default'将执行我描述的比较。这是一个C#限制,它在IL中是允许的。 –

回答

3

你的错误消息说,这一切

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作为其他任何值。

+0

你可以对这个答案做一个补充,就是建议评估一个bool以获得1或0并不是一件好事;直接使用布尔值即可。 –

+0

@DavidArno:他实际上并不想要一个bool,他想要一个新的SelectedIndex值,它是一个int。 –

+0

括号不是必需的。 – phoog

0

使用此:

((this.ListBox1.SelectedIndex == 1) != false) 
+5

双重底片不是非常易于维护。 –

+2

不会低估'!= false',但它是一种确定的代码味道。 –

+0

好的。我还没有遇到任何问题。我需要了解为什么它不是一个好的做法.. –

相关问题