c#中的??运算符
2015-08-06 07:22
579 查看
注意啦,c#中的??运算符是和?:运算符是不同的,这两者是有区别的。
??运算符称为null合并运算符,用于定义null值的类型和引用类型的默认值。
只当运算符的左操作数不为 null,此运算符将返回左操作数;否则返回右操作数。什么意思?我们来看个例子:
这里我定义了string类型的x为null,z不为空。因为x=null,所以返回右操作数,也就是z,所以y等于z。
在编写单例模式的代码的时候,我们常常需要判断instance是否为空,间接来new单例对象。
那么这个运算符刚好派上用场。比如我写个DownloadMrg单例类
是不是看起来很简洁,不用再用if判断什么的,节省了很多时间。
我们再来看看?:运算符的实现。
条件运算符 (?:) 根据Boolean 表达式的值返回两个值之一。 下面的是条件表达式的语法:
只当condition为true,first_expression 才为结果,否则,second_expression为结果。
这个运算符也可以用来处理单例模式代码:
??运算符称为null合并运算符,用于定义null值的类型和引用类型的默认值。
只当运算符的左操作数不为 null,此运算符将返回左操作数;否则返回右操作数。什么意思?我们来看个例子:
string x = null; string z = "不为空"; string y = x ?? z;
这里我定义了string类型的x为null,z不为空。因为x=null,所以返回右操作数,也就是z,所以y等于z。
在编写单例模式的代码的时候,我们常常需要判断instance是否为空,间接来new单例对象。
那么这个运算符刚好派上用场。比如我写个DownloadMrg单例类
public class DownloadMrg { public static DownloadMrg instance; public static DownloadMrg Instance { get { return instance ?? new DownloadMrg();//如果instance为null,就返回实例化单例对象 } } }
是不是看起来很简洁,不用再用if判断什么的,节省了很多时间。
我们再来看看?:运算符的实现。
条件运算符 (?:) 根据Boolean 表达式的值返回两个值之一。 下面的是条件表达式的语法:
condition ? first_expression : second_expression;
只当condition为true,first_expression 才为结果,否则,second_expression为结果。
这个运算符也可以用来处理单例模式代码:
public class DownloadMrg { public static DownloadMrg instance; public static DownloadMrg Instance { get { return (null == instance) ? new DownloadMrg() : instance; } } }
相关文章推荐
- C#模板引擎 RazorEngine3.7的扩展 — 引入外部文件
- C# 进制转换(二进制、十六进制、十进制互转)
- C# DataGridView改变行颜色
- 使用C#格式化字符串 ~
- C#中 使用 System.Windows.Forms.Time 定时器
- 第二章 C#继承&继承类型&虚函数&抽象类&抽象函数&抽象方法&隐藏方法
- 新手浅谈C#Task异步编程
- c#中的模态对话框和非模态对话框
- C# 中如何调用DLL文件(分两种情况,托管与非托管)
- C#中何时使用dynamic
- c#构造函数
- c# for与foreach
- C# 键盘勾勒 打开,隐藏,关闭,截屏快捷键
- C#高级编程小结
- C#脚本引擎 CS-Script 之(二)——性能评测
- c#运行机制
- c#ref与out
- c#读写csv
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)
- avl树的插入与删除