什么是“?”";在C#中执行

本文关键字:执行 quot 什么 | 更新日期: 2023-09-27 18:25:31

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

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

什么是“?”";在C#中执行

A ?? B

是的简写

if (A == null) 
    B
else 
    A

或者更准确地说

A == null ? B : A

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

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

基本上,这意味着如果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运算符。更多信息请点击此处:http://msdn.microsoft.com/en-us/library/ms173224.aspx

它被称为null联合运算符。请参见此处。

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