2012-06-01 50 views
3

我是通過某人的舊代碼閱讀,我發現這條線:混淆代碼與?運營商

menuItem.Checked = (menuItem.Checked == false) ? true : false; 

我不明白它做什麼,以及如何。任何幫助?

回答

4

你的表態意味着:

if(menuItem.Checked == false) 
    menuItem.Checked = true; 
else 
    menuItem.Checked = false; 

你的說法究竟是幹什麼的menuItem一個切換效果。如果是Checked那麼語句將它設置爲UnChecked,反之亦然

從MSDN ?: Operator (C# Reference)

條件運算符(?:)返回根據 布爾表達式的值兩個值之一。以下是對 條件operator.m

condition ? first_expression : second_expression; 


+1

它也可以被理解爲切換菜單項的選中狀態。即menuItem.Checked =!menuItem.Checked; – wenqiang

+0

@文強,是的,我相信OP很困惑?操作者 – Habib

0

它被稱爲三元操作的語法。它被用作if else語句,但更加簡潔。因爲它需要三個操作數,所以稱爲三元組。 它評估第一個,然後選擇第二個,如果爲true,則選擇第三個。

9

這是寫一個複雜的方式:這可以用下面的代碼來代替

menuItem.Checked = !menuItem.Checked; 
3

menuItem.Checked = !menuItem.Checked; 
3

這是等價的:

menuItem.Checked = !menuItem.Checked; 
4

Conditional Operator: ? :
看一看這意味着:

if(menuItem.Checked == false) 
{ 
    menuItem.Checked = true; 
} 
else 
{ 
    menuItem.Checked = false; 
}