Когда целевой объект имеет значение null в условном доступе к члену/операторе распространения null, а член является методом, оцениваются ли аргументы метода?
То есть в следующем коде вызывается g()
?
SomeClass x = null;
x?.Foo(g());
Как насчет h()
в:
SomeClass x = null;
x?.Bar($"h = {h()}");
SharpLab помещает оценку аргумента в блок if
, поэтому она будет пропущена. Но гарантируется ли это спецификацией или деталями реализации?
But is this guaranteed by the specification or an implementation detail?
(В дополнение к ответу HimBromBeere) Посмотрите черновик спецификации С# 6.0: docs.microsoft.com/en-us/dotnet/csharp/language-reference/ То, что вы ищете, находится ближе к концу раздела Null-conditional operator. - person   schedule 27.06.2018