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.
在你的情况下,如果oldTree是null,
将返回null,而不是试图调用GetRoot()并抛出NullReferenceException。