我有一个if控件如下;
if (Directory.Exists(System.IO.Path.Combine(systemPath, "Reports", companyName))
&& Directory.GetFiles(System.IO.Path.Combine(systemPath, "Reports", companyName),
"*.*", SearchOption.TopDirectoryOnly).Length > 0)
控制的第一部分检查目录是否存在,第二部分用于控制目录中文件的数量。
由于目录可能不存在,第二部分可以提供 DirectoryNotFoundException 的例外。此外,我不想嵌套if条件(首先是如果是目录,第二个是否用于计算文件)
我的问题是;
“&&”虽然不满足第一个条件,但操作员检查第二个条件?
答案 0 :(得分:3)
不,它没有看到here
条件AND运算符(&&)执行其bool的逻辑AND 操作数,但仅在必要时才计算其第二个操作数。
答案 1 :(得分:1)
只要一个条件为假,检查就会中止。但是,您必须使用嵌套的if或者对DirectoryNotFoundException使用try-catch-block。此外,您将添加可读性,您可以对不存在的目录作出反应。
答案 2 :(得分:1)
&&
运算符称为 lazy 运算符,因为它只会(从左到右)评估得出结论所需的内容。非懒惰对手是&
。同样适用于||
和|
。
void Test()
{
bool r;
r = F() && T(); // Prints "False", returns false
r = T() && F(); // Prints "True False", returns false
r = F() & T(); // Prints "False True", returns false
}
bool F()
{ Console.Write("False "); return false; }
bool T()
{ Console.Write("True "); return true; }