我无法理解这种编程风格

时间:2012-11-05 13:17:17

标签: c# boolean variable-assignment

有人可以向我解释这行代码的含义以及这是否是一种好的做法?

在我看来,它试图将一个或另一个值赋给布尔值,但目前尚不清楚。

   myBoolVar = isC || isP || isX;

5 个答案:

答案 0 :(得分:14)

The || operator represents a conditional OR.

如果isC,isP或isX中的任何一个为真,则

myBoolVar将为true。

它类似于布尔操作数之间的| operator,除非左侧评估为true,否则将不评估右侧

至于这是否是一种好的做法,请考虑更详细的语义等价物: -

bool myBoolVar;

if (isC)
{
  myBoolVar = true;
}
else if (isP)
{
  myBoolVar = true;
}
else if (isX)
{
  myBoolVar = true;
}

特别要考虑您希望维护哪一个。在大多数情况下,我希望人们认为较为简洁的myBoolVar = isC || isP || isX;更具可读性。

我从下面的评论中看到,你提出的关于编程是关于简单而不是“炫耀”的争论。我同意程序员经常尝试压缩或故意模糊代码以满足自己的需求 - 通常会损害项目。这可能是其中一个案例。我可能会更清楚地命名变量,我可能会将它封装在一个适当命名的属性后面,但我肯定会使用a || b || c构造而不是更冗长的东西。

如果您觉得有更明确的表达方式,请与我们分享,我们可以讨论。

答案 1 :(得分:5)

这是条件ORisCisP以及isX的值为OR - 一起编辑。

http://msdn.microsoft.com/en-us/library/6373h346.aspx

您需要做的就是阅读精细手册。

答案 2 :(得分:3)

||运算符仅表示OR。所以在伪代码中你可能会说

myBoolVal = isC OR isP OR isX

用简单的英语做什么......

“如果isC为true,或isP为true,或isX为true,则myBoolVal为true,否则myBoolVal为false”

答案 3 :(得分:2)

如果其中任何一个具有true

,则返回true
bool myBoolVar = false;
if( isC == true || isP == true || isX == true)
{
    myBoolVar = true;
}

答案 4 :(得分:1)

conditional OR

这意味着isC, isP, isX中的任何变量都是True,然后myBoolVarTrue

那是:

myBoolVar = if(isC == true) || if(isP == true) || if(isX == true)