c#中(&&,||)與(&,|)的區(qū)別詳解
對于(&&,||),運算的對象是邏輯值,也就是True/False
&&相當(dāng)與中文的并且,||相當(dāng)于中文的或者 。(叫做邏輯運算符又叫短路運算符)
運算結(jié)果只有下列四種情況。
True && True = True (左邊為true,再驗證右邊也為true,返回結(jié)果true)假如這是一個查詢條件,則執(zhí)行。
True && False = False (左邊為true,再驗證右邊為false,返回結(jié)果false)假如這是一個查詢條件,不執(zhí)行。
False && True = False (左邊為false,發(fā)生短路現(xiàn)象。右邊不再執(zhí)行,直接返回false).........同樣不執(zhí)行。
False && False = False (同上)
True || True = True (左邊為true,發(fā)生短路現(xiàn)象,右邊不執(zhí)行,直接返回true).......執(zhí)行
True || False = True (左邊為true,發(fā)生短路現(xiàn)象,右邊不執(zhí)行,直接返回true).......執(zhí)行
False || True = True (左邊為false,再驗證右邊為true,返回結(jié)果true)............執(zhí)行
False || False = False (左邊為false,再驗證右邊也為false,返回結(jié)果false).......不執(zhí)行
對于(&,|),運算的對象是位,也就是1/0,叫做位運算符
理解:0為false,1為true(通用:0表示假,所有非零的數(shù)表示真。 ######方便記憶:0,什么都沒有騙人的,則為假)
運算結(jié)果只有下列四種情況。
1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0
&&和&對于他們各自的運算對象來說,結(jié)果是一樣的。
下面用一段代碼來說明||在實際代碼中的運用
var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 && (!param.TaxTypeId.HasValue || f.TaxTypeId == param.TaxTypeId)).ToList();
當(dāng)傳入的參數(shù)中TaxTypeId==null時,param.TaxTypeId.HasValue為true,發(fā)生短路現(xiàn)象,右邊不執(zhí)行,返回結(jié)果true。
則實際執(zhí)行代碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 ).ToList();
當(dāng)傳入的參數(shù)中TaxTypeId==123時,param.TaxTypeId.HasValue為false,執(zhí)行右邊的代碼,即f.TaxTypeId == 123,
則實際執(zhí)行代碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 && f.TaxTypeId == 123 ).ToList();
適用范圍:當(dāng)我們再勾選條件進行查詢或者操縱數(shù)據(jù)庫時,可以任意選擇條件個數(shù)進行查詢,而只需調(diào)用同一個方法。(即一個服務(wù)完成多重條件的查詢)減少冗余代碼。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用C#編寫簡單的圖形化的可發(fā)送附件的郵件客戶端程序
這篇文章主要介紹了使用C#編寫一個圖形化的可發(fā)送附件的郵件客戶端程序的方法,文中的示例同樣是基于支持smtp協(xié)議的郵件服務(wù)器,需要的朋友可以參考下2016-02-02C#中Abstract 、Virtual和Override的使用及區(qū)別
C#中virtual,abstract,override用于方法重載,子類覆蓋了父類的相同方法,父類中的實現(xiàn)不可能再被外面調(diào)用。本文給大家重點介紹C#中Abstract 、Virtual和Override的使用及區(qū)別,需要的朋友參考下吧2021-06-06WPF運行時替換方法實現(xiàn)mvvm自動觸發(fā)刷新
這篇文章主要為大家詳細介紹了WPF運行時如何實現(xiàn)setter不需要調(diào)方法就可以自動觸發(fā)界面刷新,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04