Это зависит от того, задан ли тип контекстом. Например, вы можете сделать:
(int?)null ?? 3
или
null ?? (int?)3
Если вы хотите использовать бокс вместо переноса на Nullable<>
, то есть:
(object)null ?? 3
или
null ?? (object)3
или вы можете использовать другой базовый класс или интерфейс, который реализует int
, например:
(IFormattable)null ?? 3
или
null ?? (IFormattable)3
Голый null
сам по себе не имеет типа, но он неявно преобразуется в группу типов, которые допускают нулевое значение.
Для ссылочного типа тип может быть выведен из контекста:
null ?? "three" /* OK */