Ноль имеет значение «Я не знаю, что это за значение», и по определению любая операция, в которой один из операндов равен нулю, приводит к нулю. Например. 2 = ноль приводит к нулю и, следовательно, полученное значение из int = int? должно иметь нулевое значение в качестве возможного значения, а не просто иметь значения true и false. BOOL? это тип, который имеет только этот набор значений и, следовательно, является типом возврата операции.
Допускаются только неявные приведения, которые будут работать всегда. вы можете неявно привести int к long. но не длинным до int (вы можете сделать это явно), потому что последний может привести к потере информации, например если число больше, чем int.MaxValue.
В этом случае вы пытаетесь распаковать нулевое значение, что приведет к исключению во время выполнения.