当前位置: 首页 > 编程笔记 >

c#中(&&,||)与(&,|)的区别详解

拓拔高畅
2023-03-14
本文向大家介绍c#中(&&,||)与(&,|)的区别详解,包括了c#中(&&,||)与(&,|)的区别详解的使用技巧和注意事项,需要的朋友参考一下

对于(&&,||),运算的对象是逻辑值,也就是True/False

&&相当与中文的并且,||相当于中文的或者 。(叫做逻辑运算符又叫短路运算符)

运算结果只有下列四种情况。

True  && True  = True    (左边为true,再验证右边也为true,返回结果true)假如这是一个查询条件,则执行。
True  && False = False   (左边为true,再验证右边为false,返回结果false)假如这是一个查询条件,不执行。
False && True  = False   (左边为false,发生短路现象。右边不再执行,直接返回false).........同样不执行。
False && False = False   (同上)
True  || True  = True    (左边为true,发生短路现象,右边不执行,直接返回true).......执行
True  || False = True    (左边为true,发生短路现象,右边不执行,直接返回true).......执行
False || True  = True    (左边为false,再验证右边为true,返回结果true)............执行
False || False = False   (左边为false,再验证右边也为false,返回结果false).......不执行

对于(&,|),运算的对象是位,也就是1/0,叫做位运算符

理解:0为false,1为true(通用:0表示假,所有非零的数表示真。   ######方便记忆:0,什么都没有骗人的,则为假)
运算结果只有下列四种情况。

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

&&和&对于他们各自的运算对象来说,结果是一样的。

下面用一段代码来说明||在实际代码中的运用

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();

适用范围:当我们再勾选条件进行查询或者操纵数据库时,可以任意选择条件个数进行查询,而只需调用同一个方法。(即一个服务完成多重条件的查询)减少冗余代码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

 类似资料:
  • 本文向大家介绍浅谈C语言=与==的区别详解,包括了浅谈C语言=与==的区别详解的使用技巧和注意事项,需要的朋友参考一下 在 C 语言中,最容易产生混淆的操作符要属“=”与“==”。其中,“=”并不等于符号,而是赋值操作符,如 x=3。除此之外,还可以在一个语句中向多个变量赋同一个值,即多重赋值。例如,在下面代码中把 0 同时赋给 x、y 与 z。 相对于只有一个等号的赋值操作符,关系操作符中的等于

  • 本文向大家介绍C#中equal与==的区别相关面试题,主要包含被问及C#中equal与==的区别时的应答技巧和注意事项,需要的朋友参考一下 答: C#中,判断相等有两种方式,一种是传统的==操作,一种是object提供的Equals方法。 二者的区别在于: 一、==操作符判断的是堆栈中的值,Equlas判断的是堆中的值 C#提供值类型和引用类型,值类型存储在栈上,故用==判断是直接判断其值是否相等

  • 本文向大家介绍C#多线程与异步的区别详解,包括了C#多线程与异步的区别详解的使用技巧和注意事项,需要的朋友参考一下 C#多线程与异步的区别详解 随着拥有多个硬线程 CPU(超线程、双核)的普及,多线程和异步操作等并发程序设计方法也受到了更多的关注和讨论。本文主要是想与各位高手一同探讨一下如何使用并发来最大化程序的性能。 多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,

  • 本文向大家介绍C#中string.Empty和null的区别详解,包括了C#中string.Empty和null的区别详解的使用技巧和注意事项,需要的朋友参考一下 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论。但是我觉得都是不求甚解,有一些还是在误导别人。下面我来说下我对这三者的理解,如有错误的地方请大家及时指正。   一:""与string.Empty我认为是一样的。网上有一篇被转载

  • 本文向大家介绍ASP.NET中readonly与const的区别详解,包括了ASP.NET中readonly与const的区别详解的使用技巧和注意事项,需要的朋友参考一下 const是一个修饰常量的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,它在程序设计中有着非常重要的作用,给开发人员带来非常方便的应用。 下面我们来建一个控制台应用程序作测试: 以前

  • 本文向大家介绍Jquery中attr与prop的区别详解,包括了Jquery中attr与prop的区别详解的使用技巧和注意事项,需要的朋友参考一下 实践过程 在前一段时间,同事做了一个页面,效果是这样的 页面 当点击左上方那个checkBox时,要将下面的checkBox全部选中,我们的代码是这样的 然并卵,一点效果都没有,后来换成这样,好了 于是上官方的文档查了下attr和prop的区别,发现根