BZZ
随笔- 6  文章- 0  评论- 15 
博客园  首页  新随笔  联系  管理  订阅 订阅

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;

这样的三元运算。

以上冲语法的层次上对这个两种运算符的比较,欢迎讨论。
posted @ 2008-12-12 14:36 BZZ 阅读(262) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
程序员问答社区,解决您的IT难题
博客园首页博问新闻闪存程序员招聘知识库
Copyright ©2012 BZZ