关于运营商:这是什么?

What does the ?. mean in C#?

本问题已经有最佳答案,请猛点这里访问。

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

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

什么是?.

它是否检查null是什么老树,如果不是,那么它运行GetRoot方法,如果不是,那么它返回什么?这是我的第一个假设(可能是错误的),但我不能坚持下去。(确认,和/或回答新问题)

我搜索了一下What is ?. C#,没有发现任何相关的信息,就好像它忽略了我的?.(?)


它可以是来自C 6.0的空条件运算符:

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

在你的情况下,如果oldTreenull

1
oldTree?.GetRoot()

将返回null,而不是试图调用GetRoot()并抛出NullReferenceException