什么"??" 做C#?

siv*_*ash 3 .net c#

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

MemoryStream stream = null;
MemoryStream st = stream ?? new MemoryStream();
Run Code Online (Sandbox Code Playgroud)

Sin*_*ian 8

A ?? B
Run Code Online (Sandbox Code Playgroud)

是一个简写

if (A == null) 
    B
else 
    A
Run Code Online (Sandbox Code Playgroud)

或者更确切地说

A == null ? B : A
Run Code Online (Sandbox Code Playgroud)

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

MemoryStream st;
if(stream == null)
    st = new MemoryStream();
else
    st = stream;
Run Code Online (Sandbox Code Playgroud)