会话变量引用后的问号(?) - 这是什么意思

San*_*mas 18 c# vb.net asp.net

我有一个代码片段来修改.在那里我发现了这样的语法.

Session("LightBoxID")?.ToString()
Run Code Online (Sandbox Code Playgroud)

我不明白那个问号(?)是什么意思.没有谷歌搜索帮助我任何提示

tra*_*r0x 22

Session("LightBoxID")在尝试调用之前执行空检查.ToString().

MSDN:空条件运算符(C#和Visual Basic)


Ofi*_*ten 22

它是Null-Conditional运算符它是一个用于空值检查的语法糖:

return str?.ToString();
Run Code Online (Sandbox Code Playgroud)

会变成

if (str == null)
{
    return null;
}
return str.ToString();
Run Code Online (Sandbox Code Playgroud)