string strParam = Request.Params["param"]; if ( strParam== null ) { strParam= ""; } string strParam= Request.Params["param"] == null ? "": Request.Params["param"]; 你发现,尽管实现的同一个功能,但第二段代码要比第一段代码是不是更简洁。 这里的” ?:“就是一个三元的操作符。利用这个三元操作符也称条件操作符, 就很简单的把一个if语句给实现了。 在使用条件操作符的时候要注意,假定条件表达式是这样 x?y:z, 表达式类型的只能是使y 和z的变量类型之一,换句话说就是 y和z的变量类型决定这个条件表达式的类型, 无论y和z是同一类型,还是y和z不是同一类型。 如果表达式的类型和赋值类型不一致,发生编译时错误 ,例如:如果你想实现如下代码: string strTemp ; object obj; .... if(strTemp == "") obj = DBNull.Value; else obj = strTemp ; 然后为了简单,改成下面这种形式: string strTemp; object obj = strTemp == ""?DBNull.Value:strTemp; 你编译的时候,会报错。因为DBNull和string之间没隐式转换,修改成如下代码就可以了: object obj = strTemp == ""? DBNull.Value: (object)strTemp; 另外条件操作符是向右关联的,从左到右进行计算,于是a?b:c?d:e 应理解为 a?b:(c?d:e)。 上面提到了DBNull,在c#2.0里面实现了Nullable数据类型,别小看这个数据类型,其实非常有用, 从此我们就可以放弃对object数据进行 if(object==null)这样的判断了。同时你会发现, 在数据库应用上,数据库中有的字段允许取空值,在C#世界中引入nullable类型正好与之对应 ,从(C#)对象映射到关系数据库对象,或者反过来,转换都是比较平滑。 为了实现Nullable数据类型转换成non-Nullable型数据,就有了一个这样的操作符”??(两个问号)“,双问号操作符意思是取所赋值??左边的,如果左边为null,取所赋值??右边的, 比如int y = x ?? -1 如果x为空,那么y的值为-1. 于是这时候就可以把最上面第二段代码改成: string strParam= Request.Params["param"]?? ""; 嘿嘿,是不是更简洁了。 另外还有”?(单问号)“修饰符,是System.Nullable的缩写形式,比如int?代表是可空的整形, 例如:int? a = 1 或者 int? b=null。Nullable类型具有一个HasValue的bool类型只读属性, 当Nullable类型实例的该属性为true时,则表示该实例是非空实例,包含一个已知值Value, HasValue为false时,访问Value属性将导致System.InvalidOperationException。
相关推荐
C# 操作符之三元操作符“?:”是什么呢? C# 操作符之三元操作符“?:”有时也称为条件操作符。 对条件表达式b?x:y,先计算条件b,然后进行判断。 如果b的值为true,计算x的值,运算结果为x的值;否则,计算y,运算结果...
我们可以看下下面的这几个示例来看看这个操作符的使用方法: 代码如下: string message = “Hello World”; string result = message ?? “null”; //这里的result的内容是 Hello World 再看下面的这个例子子: 代码...
1、可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空,例如:string str=null;是正确的。int i=null;编译器将报错。为了使值类型也可为空,可空类型出现了,可空类型使用可...
(??) 用于如果类不为空值时返回它自身,如果为空值则返回之后的操作
这篇文章主要讨论vb.net语言和c#.net语言在语法上的不同,vb.net和c#.net有一系列微妙的差异,变量的申明和赋值,数据类型,语句终止的方式,语句块的表述,使用的变量括号,操作符的不同,条件语句的不同,错误处理...
赋值运算符也有和算数操作符所结合的用法之前附录中有提及,用法是:比如要将x加上4,然后再赋值给x,就可以写成x+=4. 代码如下: public class MathOps{ public static void main(String [] args){ Random rand=new ...
操作符优先级,格式为图片, 凑20字真难,我郁闷
昨天经高手指导 测试使用了 ==?: 和 if()else() xzyHe 为 DropDownlist 值,如果为空取值为0 代码如下: if (xzyHe ==””){int xzyHe==0;else{int xzyHe = ... 您可能感兴趣的文章:c# 操作符?? null coalescing
在c#中”??”为空合并运算符,用于定义可空类型和引用类型的默认值。 (1)如果此运算符的左操作数不为 null,则此运算符将返回左操作数;... 您可能感兴趣的文章:c# 操作符?? null coalescing operatorasp.net 关于==
C#写的表达式解析器,支持多种操作符 如加减乘除幂模,同时还支持正负、三角函数,随机值等函数,可以支持自己扩展操作符,同时能支持设置表达式中的变量.表达式使用的是逆波兰式(中缀表达式转换成的后缀表达式),非递归...
C# 使用技巧之 += 操作符的重载
C#数据类型及操作符授课课件,初学者入门适用
主要介绍了C#中的is和as操作符区别小结,is是验证操作对象是不是自己希望的,as是将对象转换成指定类型,需要的朋友可以参考下
操作符的重载是C#中挺重要的一个知识,希望这个小程序能对一部分人提供帮助!
2,标识choose:是否输入了操作符 3,标识opMain:输入了什么操作符; 4, 添加标识cal:是否进行了运算; 5, 操作数1mainNum1:存储第一个操作数以及当多操作数计算时存储前两个数 的运算结果; 6, 操作数2...
c#课件 c#资料 C# j经典部分 精华部分 类,接口,继承 文件操作 操作符重载 代理 属性 放射 特征 使用线程 异常处理 函数重载 集合 数组 欢迎下载!!
3.5.1 关系操作符和相等性操作符 77 3.5.2 逻辑布尔操作符 77 3.5.3 逻辑求反操作符 78 3.5.4 条件操作符 79 3.5.5 空接合操作符 80 3.6 按位操作符 80 3.6.1 移位操作符 81 3.6.2 按...