2010-07-14 62 views
7

我們是否有C#中的任何運算符,以避免短路評估和遍歷所有條件。如何避免在C#中執行相同功能的短路評估

if(txtName.Text.xyz() || txtLastName.Text.xyz()) 
{ 

} 

public static bool xyz(this TextBox txt) 
{ 
//do some work. 
return false; 
} 

應該不管獲得的輸出的評估所有條件。根據獲得的結果評估最後的條件後繼續。 ?

+0

爲什麼要評估兩次相同的情況? – 2010-07-14 08:06:21

+0

@Adrian:以此爲例。 xyz函數可以包含任何類型的定義,可以是委託或其他。 – 2010-07-14 08:07:19

回答

13

只需使用一個條,無論第一個結果的結果如何,它都會評估兩個參數。

if(txtName.Text.xyz() | txtLastName.Text.xyz()) { } 

你也可以做同樣的AND,即你可以用一個符號代替&&得到與上面相同影響:

if(txtName.Text.xyz() & txtLastName.Text.xyz()) { } // Both sides will be called 
+0

是的,這是早! – GenericTypeTea 2010-07-14 08:15:51

+0

它也適用於JavaScript嗎? – 2010-07-14 08:35:31

+0

是的,它的工作原理是一樣的。 – GenericTypeTea 2010-07-14 08:52:47

4

只需用一個單杆;

if(txtName.Text.xyz() | txtLName.Text.xyz()) 
{ 

}