【发布时间】:2012-04-24 18:40:14
【问题描述】:
我正在尝试看看是否有更好的方法来编写以下内容:
if ((DirectoryDetailsPath == null) & (FileDetailsPath == null))
{
Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");
}
不使用按位“&”运算符。我更喜欢使用逻辑运算符,但由于短路,我无法评估这两个字段。
我只想在两个字段都为“null”时看到错误。
谢谢
【问题讨论】:
-
为什么如果您知道第一个之后的结果,您为什么要评估两者?如果你真的需要评估两者,为什么不使用
&? -
评估两者的唯一原因是它们是否有一些副作用,这是糟糕的编程风格。在这种情况下,应首先评估方法,然后在条件中检查其结果
-
bool operator&(bool a, bool b)实际上并未定义为“按位”运算符。虽然这一点是学术性的,并且经常被称为按位。 -
@JonSkeet 我正在尝试评估两者,因为我的条件是仅当两个值都为空时才显示错误。有没有更好的办法?
-
@PranavShah:但是一旦您看到第一个表达式不为空,您知道您不会显示错误消息 - 那么为什么还要评估第二个表达式?