Что это?. означает в С#?
Из проекта 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#
, и ничего не произошло, это как если бы он проигнорировал мой ?.
(?)
Ответы
Ответ 1
Это может быть Null-Conditional Operator от С# 6.0:
Оператор с нулевым условием условно проверяет значение null перед вызовом целевого метода и любого дополнительного метода в цепочке вызовов.
В вашем случае, если oldTree
- null
,
oldTree?.GetRoot()
вернет null
вместо того, чтобы называть GetRoot()
и бросать NullReferenceException
.