2015-07-20 343 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

好的。我還沒有遇到任何問題。我需要了解爲什麼它不是一個好的做法.. –

相關問題