“??”是什么意思为什么不返回“(dbContext = new TeduShopDbContext())”而不是返回dbContext? (dbContext = new TeduShopDbContext())
public TeduShopDbContext Init()
{
return dbContext ?? (dbContext = new TeduShopDbContext());
}
感谢帮助
答案 0 :(得分:1)
?? operator被称为null-coalescing运算符。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。
答案 1 :(得分:0)
这是我经常使用的一个光滑的小技巧。它被称为Null Coalescing Operator。
它只是返回dbContxt,除非dbContext为null,在这种情况下,dbContext被初始化为TeduShopDbContext的新实例,并返回该实例。
这个小技巧允许你在第一次Get操作时初始化属性,或者在这种情况下,如果多次调用它,会使Init函数不能创建新实例。
编辑:这是一个更冗长的方法,可以做同样的事情:
public TeduShopDbContext Init()
{
if(dbContext == null)
dbContext = new TeduShopDbContext();
return dbContext;
}