У меня есть этот код:
MyClass _localMyClass = MyClassDAO.GetMyClassByID(123) ?? new MyClass();
Это метод:
public static MyClass GetMyClassByID(int id)
{
var query = from m in ctx.MyClass
where m.MyClassID == id
select m;
return query.FirstOrDefault<MyClass>();
}
Так что FirstOrDefault()
не находит попадания в контексте структуры сущности, который являетсяобъект "ctx".Таким образом, возвращаемое значение «по умолчанию» равно null
, поскольку целью запроса является класс.
Результат первого бита кода с использованием ??
приводит к _localMyClass
быть чем?Я бы сказал, что это будет new MyClass()
.Вместо этого _localMyClass
становится нулевым.Я попытался сгруппировать логику с различными наборами скобок, но все же безуспешно.
Все еще страннее;когда я устанавливаю точку останова отладки и копирую / вставляю MyClassDAO.GetMyClassByID(123) ?? new MyClass()
в экран просмотра Visual Studio, в результате получается new MyClass()
вместо null
.
Кто-нибудь может объяснить, почему это будетработать таким образом?Почему он не распознает возвращаемое значение метода как null
, а затем использует new
часть?