当db
由于某种原因为空时,此方法将返回什么?编译很好,return
块之外没有using
语句。
public Guid GetUserId(string username)
{
using (AndeDBEntities db = new AndeDBEntities())
{
var userId =
from u in db.Users
where u.Username == username
&& u.Deleted != true
select new { UserID = u.UserId };
if (userId == null || userId.Count() == 0)
return Guid.Empty;
else
return userId.First().UserID;
}
}
答案 0 :(得分:2)
如果db
由于某种原因为空,则可能会在运行时引发异常。这很可能是NullReferenceException,但可能是其他一些例外,具体取决于它的编写方式。
但是,这真的不可能。 db
应始终有效,但如果构造函数(AndeDBEntities)未正确设置,则db.Users可能为null。在这种情况下,当您点击LINQ查询时(即:访问db.Users
),您将获得NullReferenceException。
答案 1 :(得分:1)
db不会为null。如果新的分配失败,将抛出内存不足异常,并且永远不会执行using块,并且该函数不会返回一个值(因为异常也将从函数中消失)。
答案 2 :(得分:0)
在正常情况下,db
不能为空。
唯一的方法是new
失败,在这种情况下你会遇到更严重的问题。