Подтвердить что ты не робот

Что это?. означает в С#?

Из проекта Roslyn, файла src\Compilers\CSharp\Portable\Syntax\CSharpSyntaxTree.cs в строке 446 есть:

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

Что такое ?.?

Проверяет ли он что-то oldTree null, а если нет, то он запускает метод GetRoot, а если нет, то что он возвращает? Это мое первое предположение (что может быть неправильно), но я не могу с этим справиться. (Подтвердите это и/или ответьте на новый вопрос)

Я googled What is ?. C#, и ничего не произошло, это как если бы он проигнорировал мой ?. (?)

4b9b3361

Ответ 1

Это может быть Null-Conditional Operator от С# 6.0:

Оператор с нулевым условием условно проверяет значение null перед вызовом целевого метода и любого дополнительного метода в цепочке вызовов.

В вашем случае, если oldTree - null,

oldTree?.GetRoot()

вернет null вместо того, чтобы называть GetRoot() и бросать NullReferenceException.