null 合并运算符及三元运算符的简单论述
三元运算符的由来:语法简洁性
来举个例子:
if(x>5){
str = "大于5";
}else{
str = "小于等于5";
}
假如程序中有多个短小的条件判断,那将出现多个if...else 的
语句,这将带给程序的不可读性以及代码不简洁性。
虽然我们可以这样:
if(x>5){str = "大于5";}else{str = "小于等于5";}
这样的代码可读性问题依然存在。
还好 c#为我们提供了三元运算符来帮助我们简化这种短小的
if...else 。
str = (x>5)?"大于5":"小于等于5";
后来出现一个"??" 运算符及null合并运算符。
即 int? x = null;//可空类型
//x 如果为null,y = 0;
int y = x??0;
"??" 运算符与三元运算符之间又有什么相同点和不同点呢?
这两个运算符相同之处在于 都是通过逻辑运算并从两个值中选择
其一返回给程序,不同之处在于 三元运算符能够提供更加灵活的
逻辑表达式及任何返回布尔类型的方法。而 "??" 运算符却不同
,它只能描述其值是否为 null 的逻辑表达式,你也可以把"??"
运算符相像成
int y = (x != null)?x:0;
这样的三元运算。
以上冲语法的层次上对这个两种运算符的比较,欢迎讨论。

