我有这个代码:
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
部分?