我不明白这个Init函数返回的结果,谢谢你的帮助:

时间:2017-01-19 22:49:03

标签: c# asp.net-mvc

“??”是什么意思为什么不返回“(dbContext = new TeduShopDbContext())”而不是返回dbContext? (dbContext = new TeduShopDbContext())

   public TeduShopDbContext Init()
{
    return dbContext ?? (dbContext = new TeduShopDbContext());
}

感谢帮助

2 个答案:

答案 0 :(得分:1)

?? operator被称为null-coalescing运算符。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。

See here more examples!

答案 1 :(得分:0)

这是我经常使用的一个光滑的小技巧。它被称为Null Coalescing Operator

它只是返回dbContxt,除非dbContext为null,在这种情况下,dbContext被初始化为TeduShopDbContext的新实例,并返回该实例。

这个小技巧允许你在第一次Get操作时初始化属性,或者在这种情况下,如果多次调用它,会使Init函数不能创建新实例。

编辑:这是一个更冗长的方法,可以做同样的事情:

public TeduShopDbContext Init()
{
   if(dbContext == null)
      dbContext = new TeduShopDbContext();

   return dbContext;
}