您好,登錄后才能下訂單哦!
c#中(&&,||)與(&,|)的區(qū)別是什么,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
對(duì)于(&&,||),運(yùn)算的對(duì)象是邏輯值,也就是True/False
&&相當(dāng)與中文的并且,||相當(dāng)于中文的或者 。(叫做邏輯運(yùn)算符又叫短路運(yùn)算符)
運(yùn)算結(jié)果只有下列四種情況。
True && True = True (左邊為true,再驗(yàn)證右邊也為true,返回結(jié)果true)假如這是一個(gè)查詢條件,則執(zhí)行。True && False = False (左邊為true,再驗(yàn)證右邊為false,返回結(jié)果false)假如這是一個(gè)查詢條件,不執(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,再驗(yàn)證右邊為true,返回結(jié)果true)............執(zhí)行False || False = False (左邊為false,再驗(yàn)證右邊也為false,返回結(jié)果false).......不執(zhí)行
對(duì)于(&,|),運(yùn)算的對(duì)象是位,也就是1/0,叫做位運(yùn)算符
理解:0為false,1為true(通用:0表示假,所有非零的數(shù)表示真。 ######方便記憶:0,什么都沒有騙人的,則為假)運(yùn)算結(jié)果只有下列四種情況。
1 & 1 = 11 & 0 = 00 & 1 = 00 & 0 = 01 | 1 = 11 | 0 = 10 | 1 = 10 | 0 = 0
&&和&對(duì)于他們各自的運(yùn)算對(duì)象來說,結(jié)果是一樣的。
下面用一段代碼來說明||在實(shí)際代碼中的運(yùn)用
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時(shí),param.TaxTypeId.HasValue為true,發(fā)生短路現(xiàn)象,右邊不執(zhí)行,返回結(jié)果true。
則實(shí)際執(zhí)行代碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 ).ToList();
當(dāng)傳入的參數(shù)中TaxTypeId==123時(shí),param.TaxTypeId.HasValue為false,執(zhí)行右邊的代碼,即f.TaxTypeId == 123,
則實(shí)際執(zhí)行代碼:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign == 2 &&f.TaxTypeId == 123 ).ToList();
適用范圍:當(dāng)我們?cè)俟催x條件進(jìn)行查詢或者操縱數(shù)據(jù)庫時(shí),可以任意選擇條件個(gè)數(shù)進(jìn)行查詢,而只需調(diào)用同一個(gè)方法。(即一個(gè)服務(wù)完成多重條件的查詢)減少冗余代碼。
看完上述內(nèi)容,你們掌握c#中(&&,||)與(&,|)的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。