是什么?在 C# 中是什么意思?

What does the ?. mean in C#?

从项目 Roslyn、文件 src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs 的第 446 行有:

using (var parser = new InternalSyntax.LanguageParser(lexer, oldTree?.GetRoot(), changes))

那里的?.是什么?

它是否检查 oldTree 是什么 null,如果不是,那么它是 运行 GetRoot 方法,如果不是,那么它是什么 returns?这是我的第一个假设(可能是错误的),但我无法继续下去。 (确认一下,and/or回答新问题)

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

它可能是来自 C# 6.0 的 Null-Conditional Operator

The null-conditional operator conditionally checks for null before invoking the target method and any additional method within the call chain.

在你的例子中,如果 oldTreenull

oldTree?.GetRoot()

将 return null 而不是尝试调用 GetRoot() 并抛出 NullReferenceException.