Каков результат, если все параметры в операции объединения нулей равны нулю?
Когда этот код заканчивается, каков результат myObject
?
object myObject = "something";
object yourObject = null;
myObject = null ?? yourObject;
3 ответа
myObject будет нулевым
Это переводится на -
if (null == null)
myObject = yourObject;
else
myObject = null;
Оператор coalesce переводится так:
x ?? y
x != null ? x : y
Поэтому то, что у вас есть:
myObject = null != null ? null : yourObject;
Что на самом деле довольно бессмысленно, поскольку ноль всегда будет нулевым.
Просто для удовольствия, вот небольшой стол:
A?? B -> R ---------------------?? любой -> а; где не ноль ноль?? б -> б; для любого б ноль?? нуль -> ноль; подразумевается из предыдущего
И с тех пор ??
просто (сюрприз!) связанный с правами инфиксный оператор, x ?? y ?? z
-> x ?? (y ?? z)
, подобно &&
а также ||
, ??
также операция короткого замыкания.
... из ?? Оператор (C# Reference):
Он (??) возвращает левый операнд, если он не равен нулю; в противном случае он возвращает правильный операнд.
... из ссылки на язык C# 3.0:
Нулевое коалесцирующее выражение формы b требует, чтобы a был обнуляемого типа или ссылочного типа. Если a не нуль, результат a?? б является; в противном случае результат b. Операция оценивает b, только если a является нулем.