(&&,||)與(&,|)的區別和應用
阿新 • • 發佈:2018-11-02
簡單陳述:||,&&判斷中前面的表示式滿足條件時,不會再執行後面的表示式(短路);&,| 程式會繼續執行後面的表示式
C#,JAVA裡都是這樣
對於(&,|),運算的物件是位,也就是1/0,叫做位運算子
對於(&&,||),運算的物件是邏輯值,也就是True/False
&&相當與中文的並且,||相當於中文的或者 。(叫做邏輯運算子又叫短路運算子)
下面用一段程式碼來說明||在實際程式碼中的運用
var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 && (!param.TaxTypeId.HasValue || f.TaxTypeId == param.TaxTypeId)).ToList();
當傳入的引數中TaxTypeId==null時,param.TaxTypeId.HasValue為true,發生短路現象,右邊不執行,返回結果true。
則實際執行程式碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 ).ToList();
當傳入的引數中TaxTypeId==123時,param.TaxTypeId.HasValue為false,執行右邊的程式碼,即f.TaxTypeId == 123,
則實際執行程式碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 &&
f.TaxTypeId == 123 ).ToList();
適用範圍:當我們再勾選條件進行查詢或者操縱資料庫時,可以任意選擇條件個數進行查詢,而只需呼叫同一個方法。(即一個服務完成多重條件的查詢)減少冗餘程式碼。