对于(&&,||),运算的对象是逻辑值,也就是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为false,1为true(通用:0表示假,所有非零的数表示真。 ######方便记忆:,什么都没有骗人的,则为假)
运算结果只有下列四种情况。
& =
& =
& =
& = | =
| =
| =
| =
&&和&对于他们各自的运算对象来说,结果是一样的。

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

var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign ==  &&
(!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 ==  ).ToList();

当传入的参数中TaxTypeId==123时,param.TaxTypeId.HasValue为false,执行右边的代码,即f.TaxTypeId == 123,

则实际执行代码:var data = svc.DeclarationHeads.Include("TaxType").Where(f => f.CorporationCode == param.CorporationCode && f.FlowSign ==  &&
f.TaxTypeId == ).ToList();

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

c#中(&&,||)与(&,|)的区别和应用的更多相关文章

  1. MyBatis Mapper.xml文件中 $和#的区别

    MyBatis Mapper.xml文件中 $和#的区别   网上有很多,总之,简略的写一下,作为备忘.例子中假设参数名为 paramName,类型为 VARCHAR . 1.优先使用#{paramN ...

  2. (实用篇)PHP中unset,array_splice删除数组中元素的区别

    php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除 ...

  3. javascript中&&和||的区别

    javascript中&&和||的区别 &&和||操作符两边不是布尔类型时,系统会转换成布尔类型值再计算(空字符串.null.0都会被转成false),结果本身不变. ...

  4. mybatis 中#{}与${}的区别 (面试题)

    MyBatis/Ibatis中#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 如:order by #user_id#,如果传入的值是111,那么解析成sql时的 ...

  5. OC类方法和实例方法中的self区别

    OC类方法和实例方法中的self Objective-C里面既有实例方法也类方法.类方法(Class Method) 有时被称为工厂方法(Factory Method)或者方便方法(Convenien ...

  6. Activity中与ListActivity中使用listview区别

    Activity中与ListActivity中使用listview区别 一.Activity中与ListActivity中使用listview区别(本身没多大区别,只是ListActivity在lis ...

  7. C字符串和C++中string的区别 &&&&C++中int型与string型互相转换

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  8. javascript中=、==、===区别详解

    javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...

  9. C字符串和C++中string的区别 &&&&C++中int型与string型互相转换

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...

  10. [zz] makefile中=和:=的区别

    转载自:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 在Makefile中我们经常看到 = := ?= +=这几个赋 ...

随机推荐

  1. Glide图片加载库的使用

    http://www.cnblogs.com/whoislcj/p/5558168.html这篇文章写得很详细,我这里简单说一些 1.app的build.gradle的dependencies里面添加 ...

  2. java学习-排序及加密签名时数据排序方式

    排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...

  3. SpringBoot入门 (十二) 定时任务

    本文记录在SpringBoot中使用定时任务. 在我们的项目中,经常需要用到定时任务去帮我们做一些事情,比如服务状态监控,业务数据状态的更改等,SpringBoot中实现定时任务有2中方案,一种是自带 ...

  4. FFmpeg简易播放器的实现-最简版

    本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10040202.html,转载请注明出处 基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文 ...

  5. C#生成带Logo二维码

    1.下载ThoughtWorks.QRCode引用并添加在工程中2.在实现类QRCodeEncoderDemo中引入Dll,添加方法 using System; using System.Collec ...

  6. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

  7. 设置ul水平居中

    <div class="jdcg-menu-nav"> <ul> <li>基本信息</li> <li>阶段资料</ ...

  8. 怎么在XY图表中添加注解(LightningChart控件为例)?

    场景: 折线图上有多个信号,每个信号都需要显示在自己的Y轴上.如何在屏幕的右侧显示每个信号的基本统计值?这里有为每个信号计算基本数据: 最小值,最大值,平均值. | |Signal 3........ ...

  9. Oracle11g自带的SQL_developer无法打开

    在安装完Oracle Database 11g Release 2数据库,想试一下Oracle自带的SQL DeveloperW工具,在操作系统菜单的所有程序中找到SQL Developer如下所示, ...

  10. Java基础——String类(二)

    今天做了几道String常见操作.先来几个代码实例: 例一:此方法,仅把字符串前后出现的空格去掉了,中间部分不会. class TestTrim { public static void main(S ...