Просто для удовольствия, вот небольшой стол:
A ?? B -> R
---------------------
a ?? any -> a; where a is not-null
null ?? b -> b; for any b
null ?? null -> null; implied from previous
А поскольку ??
- это просто (удивительно!) Инфиксный оператор, связанный с правами, x ?? y ?? z
-> x ?? (y ?? z)
. Как и &&
и ||
, ??
также является операцией короткого замыкания.
... от ?? Оператор (C # Reference) :
Он (??) возвращает левый операнд, если он не равен нулю; в противном случае он возвращает правильный операнд.
... из C # 3.0 Справочник по языку:
Нулевое объединяющее выражение формы b требует, чтобы a был обнуляемого типа или ссылочного типа. Если a не нуль, результат a ?? б является; в противном случае результат b. Операция оценивает b, только если a равно нулю.