What does “??” do in C#?
我在我的项目中发现了这个新的、有趣的代码。它是做什么的,它是如何工作的?
1 2
| MemoryStream stream = null;
MemoryStream st = stream ?? new MemoryStream (); |
- 提示它被称为Null Coalescing运算符
- ??operator chaekcs如果stream为空,则使用new关键字创建新的memoryStream。
- 是混乱的接线员
- 令人惊奇的是,人们是多么的懒惰。谷歌查询"?"接线员"在第一次击中时给你一个答案。说真的。
是
1 2 3 4
| if (A == null)
B
else
A |
或者更准确地说
因此,在最详细的扩展中,您的代码相当于:
1 2 3 4 5
| MemoryStream st ;
if(stream == null)
st = new MemoryStream ();
else
st = stream ; |
基本上就是说,如果MemoryStream stream等于null创建MemoryStream st = new MemoryStream();。
因此,在这种情况下:
1
| MemoryStream st = stream ?? new MemoryStream (); |
方法
1 2 3 4 5 6
| MemoryStream st ;
if (stream == null)
st = new MemoryStream ();
else
st = stream ; |
它被称为空coelesce运算符。更多信息请访问:http://msdn.microsoft.com/en-us/library/ms173224.aspx
它被称为空合并运算符。请看这里。
这意味着如果stream为空,它将创建一个新的MemoryStream对象。