【发布时间】:2013-01-29 14:07:11
【问题描述】:
假设我有以下布尔值:
- 是A
- 是B
- 是C
- 是ExistingA
- 是ExistingB
- 是ExistingC
当isA、isB、isC为真时,如果所有真bool对应的isExisting bool都为真,我想做点什么。如果 isA、isB 或 isC 为 false,则其对应的 isExisting bool 无关紧要。
这是我想出的:
if ((isA || isB || isC)
&& ((!isA || isExistingA)
&& (!isB || isExistingB)
&& (!isC || isExistingC)))
{
// do something
}
我今天显然无法思考,想知道是否有更简单的方法来表达这一点。
【问题讨论】:
-
对我来说似乎很合理,虽然
&&是关联的,所以你不需要在第二个和第三个括号周围额外的括号。 -
@Neil:我认为额外的括号使它更具可读性。
-
另外,@John Straka:您使用多行和缩进的方式使语句更易于阅读:)
-
缺少的运算符是implies。似乎几乎不值得添加。
-
我通常将它们分组为方法,以使
if语句在变得如此复杂时更具可读性。
标签: c# comparison boolean