1. 程式人生 > >(&&,||)與(&,|)的區別和應用

(&&,||)與(&,|)的區別和應用

簡單陳述:||,&&判斷中前面的表示式滿足條件時,不會再執行後面的表示式(短路);&,| 程式會繼續執行後面的表示式
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();

適用範圍:當我們再勾選條件進行查詢或者操縱資料庫時,可以任意選擇條件個數進行查詢,而只需呼叫同一個方法。(即一個服務完成多重條件的查詢)減少冗餘程式碼。

參考地址:https://www.cnblogs.com/likui-bookHouse/p/7479369.html