1

我正在尝试查看是否有更好的方法来编写以下内容:

if ((DirectoryDetailsPath == null) & (FileDetailsPath == null))
{
  Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");

}

不使用按位“&”运算符。我更喜欢使用逻辑运算符,但由于短路,我无法评估这两个字段。

如果两个字段都是“null”,我只想看到一个错误。

谢谢

4

2 回答 2

2

如果您确实必须评估这两个条件并且不想使用按位运算符,请在if语句之外执行。

bool isDirectoryDetailsPathNull = DirectoryDetailsPath == null;
bool isFileDetailsPathNull = FileDetailsPath == null;

if (isDirectoryDetailsPathNull && isFileDetailsPathNull)
{
    Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");
}

但是,这真的没有任何意义。编译器可能会决定内联变量,有效地给你这个,这是你说你不想要的。

if ((DirectoryDetailsPath == null) && (FileDetailsPath == null))
{
    Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");
}
于 2012-04-24T18:47:43.077 回答
2

如果两个字段都是“null”,我只想看到一个错误。

然后尝试使用&&

if ((DirectoryDetailsPath == null) && (FileDetailsPath == null))
{
  Console.WriteLine("Error: Path for 'Directory' or 'File' has to be specified.");

}

更多信息:

如果第一个条件为假,上述解决方案将短路。这仍然满足仅在两个值都为空时才写入输出的要求。

于 2012-04-24T18:42:02.377 回答