什么“??”做C#?

时间:2013-07-31 05:26:08

标签: c# .net

我在项目中发现了这个新的有趣的代码。它做了什么,它是如何工作的?

MemoryStream stream = null;
MemoryStream st = stream ?? new MemoryStream();

3 个答案:

答案 0 :(得分:8)

A ?? B

的简写
if (A == null) 
    B
else 
    A

或更准确地说

A == null ? B : A

所以在最详细的扩展中,您的代码等同于:

MemoryStream st;
if(stream == null)
    st = new MemoryStream();
else
    st = stream;

答案 1 :(得分:1)

基本上这意味着如果MemoryStream stream等于null,则创建MemoryStream st = new MemoryStream();

所以在这种情况下如下:

MemoryStream st = stream ?? new MemoryStream();

装置

MemoryStream st;

if (stream == null)
   st = new MemoryStream();
else 
   st = stream;

它被称为 null coelesce operator 。更多信息:http://msdn.microsoft.com/en-us/library/ms173224.aspx

答案 2 :(得分:0)

它被称为null coalesce运算符。请参阅here

这意味着如果stream为null,它将创建一个新的MemoryStream对象。