В соответствии с документацией as
operator, as
"используется для выполнения определенных типов преобразований между совместимыми ссылочными типами". Поскольку Nullable на самом деле является значением), я бы ожидал, что as
не будет работать с ним. Однако этот код компилируется и запускается:
object o = 7;
int i = o as int? ?? -1;
Console.WriteLine(i); // output: 7
Это правильное поведение? Не соответствует ли документация для as
? Я что-то пропустил?