令人困惑的代码?操作者

时间:2012-06-01 07:29:47

标签: c#

我正在阅读某些旧代码,我找到了这一行:

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

我不明白它的作用和方式。有什么帮助吗?

8 个答案:

答案 0 :(得分:9)

这是一种复杂的写作方式:

menuItem.Checked = !menuItem.Checked;

答案 1 :(得分: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;


答案 2 :(得分:4)

看看Conditional Operator: ? :
这意味着:

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

答案 3 :(得分:3)

可以使用以下代码替换它:

menuItem.Checked = !menuItem.Checked;

答案 4 :(得分:3)

这相当于:

 menuItem.Checked = !menuItem.Checked;

答案 5 :(得分:2)

这是关于它的MSDN文章。它包含指向其他有用运算符的链接:http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

答案 6 :(得分:2)

它被称为三元运算符,一个简单的谷歌搜索提供了有关其如何工作和可能性的很好的信息。

看看:https://www.google.com/search?q=Ternary+Operators+c%23

正如人们已经指出的那样,这只是编写简单if语句的一种更简单,更简单的方法。

答案 7 :(得分:0)

它被称为三元运算符。它像if else语句一样使用但更精简。 它被称为三元组,因为它需要三个操作数。 它评估第一个,然后选择第二个如果为真,第三个如果为假。