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

时间:2015-04-18 19:26:24

标签: c# operators

从项目Roslynsrc\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs446处有:

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

那里的?.是什么?

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

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

1 个答案:

答案 0 :(得分:25)

C#6.0可能是Null-Conditional Operator

  

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

在您的情况下,如果oldTreenull

oldTree?.GetRoot()

将返回null,而不是尝试致电GetRoot()并投掷NullReferenceException