我无法理解这种编程风格

bri*_*lox 6 c# boolean variable-assignment

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

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

   myBoolVar = isC || isP || isX;
Run Code Online (Sandbox Code Playgroud)

Iai*_*way 14

||运营商表示有条件的或.

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

它类似于| 布尔操作数之间的运算除了如果左侧的计算结果为true,则不会计算右侧.

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

bool myBoolVar;

if (isC)
{
  myBoolVar = true;
}
else if (isP)
{
  myBoolVar = true;
}
else if (isX)
{
  myBoolVar = true;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 为什么将按位OR运算符抛入混合?OP显然几乎不知道他最初在做什么.为什么要再混淆他了?布尔 - >逻辑或.整数位掩码 - >按位OR. (2认同)
  • @Jonathon Reinhart:我不是故意粗鲁,而是a)| 运算符是逻辑运算符,也是按位运算符,b)||的短路行为 操作员是其使用的基础,c)如果你对OP浪费时间这么生气,你为什么评论? (2认同)

Roy*_*tus 5

这是有条件的OR.的价值观isCisPisXOR-ed在一起.

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

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

  • "精细"手册:-) (3认同)
  • 我没有说"谷歌它",我说"RTFM"......所以如果你读了一本关于C#的正确书籍,你就会学会如何使用它.为什么这么多人只是在没有阅读适当的教科书的情况下潜入编程? (2认同)