关于.NET:c#中??什么意思

What does “??” do in C#?

本问题已经有最佳答案,请猛点这里访问。

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

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


1
A ?? B

1
2
3
4
if (A == null)
    B
else
    A

或者更准确地说

1
A == null ? B : 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对象。