2013-02-15 41 views
2

我有一個如果控制如下;相關的條件與&&操作符控制

if (Directory.Exists(System.IO.Path.Combine(systemPath, "Reports", companyName)) 
    && Directory.GetFiles(System.IO.Path.Combine(systemPath, "Reports", companyName), 
     "*.*", SearchOption.TopDirectoryOnly).Length > 0) 

控件的第一部分檢查目錄是否存在,第二部分是控制目錄中文件的數量。

由於該目錄可能不存在,因此第二部分可以給出例外DirectoryNotFoundException。我也不想嵌套,如果條件(首先如果目錄,第二如果計數文件)

我的問題是,

是否「& &」操作員檢查第二個條件,雖然第一個條件不滿足?

回答

3

不,它不需要看here

的條件與運算(& &)執行邏輯與它的布爾 操作數,但如果需要只計算第二個操作數。

1

只要有一個條件爲false,檢查就會中止。但是,您將不得不使用嵌套的if或對於DirectoryNotFoundException使用try-catch-block。此外,您將添加可讀性,並且您可以對不存在的目錄做出反應。

1

&&操作被稱爲運營商,因爲它只會評估(左到右),以得出一個結論,需要什麼。非懶惰的對手是&。這同樣適用於|||

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