Рассмотрим следующий код:
Присвоение логического значения? логическому значению является ошибкой времени компиляции, но приведенный выше код выполняется успешно как во время компиляции, так и во время выполнения. Почему? Хотя третий оператор гарантирует, что мы никогда не присваиваем значение null значению x, в случае, если y не равно нулю, мы все равно присваиваем значение bool? типу bool , значит, это должна быть ошибка с точки зрения компилятора, не так ли?
Или компилятор C# достаточно умен, чтобы обнаружить, что конкретный фрагмент кода не может создать ситуация, когда значению x будет присвоено значение null?
Подробнее здесь:
https://stackoverflow.com/questions/200 ... ol-to-bool