这是什么?在C#中意味着什么?

Lyi*_*Sky 15 c# operators

从项目Roslyn,文件src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs在线路446有:

using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))
Run Code Online (Sandbox Code Playgroud)

是什么?.呢?

它检查oldTree是什么null,如果不是那么它正在运行GetRoot方法,如果没有那么它返回什么?这是我的第一个假设(可能是错误的),但我无法继续前进.(确认,和/或回答新问题)

我用Google搜索What is ?. C#,没有任何相关内容,就好像它忽略了我的?.(?)

Ale*_*exD 25

它可能是C#6.0中的Null-Conditional运算符:

在调用目标方法和调用链中的任何其他方法之前,空条件运算符有条件地检查null.

在你的情况下,如果oldTreenull,

oldTree?.GetRoot()
Run Code Online (Sandbox Code Playgroud)

将返回,null而不是试图打电话GetRoot()和投掷NullReferenceException.