如果条件由&&和操作者

时间:2013-02-15 09:33:15

标签: c# if-statement

我有一个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条件(首先是如果是目录,第二个是否用于计算文件)

我的问题是;

“&&”虽然不满足第一个条件,但操作员检查第二个条件?

3 个答案:

答案 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; }