Код: Выделить всё
public class Foo {}
public class Bar {}
internal class Program
{
static void Main(string[] args)
{
Foo? foo = null;
Bar? bar = new Bar();
object? val = foo ?? bar; // FAIL: Compiler error CS0019
}
}
ошибка CS0019: Оператор '??' нельзя применить к операндам типа «Foo» и «Bar»
Но я объявил Foo? и Bar?, которые оба могут быть назначены переменная типа объект?. Если я изменю его на использование оператора if и четырех строк, все будет работать нормально.
Код: Выделить всё
object? val = default;
if (foo != null)
val = foo;
else
val = bar;
Код: Выделить всё
object? val = (object?)foo ?? bar; // THIS COMPILES
Подробнее здесь: https://stackoverflow.com/questions/790 ... ot-compile