C# 使用using语句时,此方法将返回什么?

C# 使用using语句时,此方法将返回什么?,c#,C#,由于某种原因,db为空时,此方法将返回什么?compile很好,并且在using块之外没有return语句 public Guid GetUserId(string username) { using (AndeDBEntities db = new AndeDBEntities()) { var userId = from u in db.Users where u

由于某种原因,
db
为空时,此方法将返回什么?compile很好,并且在
using
块之外没有
return
语句

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;
        }
    }

如果由于某种原因,
db
为空,则可能会在运行时引发异常。这很可能是一个异常,但也可能是其他异常,具体取决于它的编写方式


然而,这真的不可能
db
应始终有效,但如果构造函数(AndeDBEntities)未正确设置db.Users,则db.Users可能为null。在这种情况下,当您点击LINQ查询(即:访问
db.Users
)时,您将得到一个空值。

如果
db
由于某种原因为空,这可能会在运行时引发异常。这很可能是一个异常,但也可能是其他异常,具体取决于它的编写方式


然而,这真的不可能
db
应始终有效,但如果构造函数(AndeDBEntities)未正确设置db.Users,则db.Users可能为null。在这种情况下,当您点击LINQ查询(即:访问
db.Users
)时,您将得到一个字符串。

db将不会为空。如果新的分配失败,将抛出内存不足异常,并且永远不会执行using块,并且函数将不会返回值(因为异常也将从函数中吹出)。

db将不为空。如果新的分配失败,将抛出内存不足异常,并且永远不会执行using块,并且函数将不会返回值(因为异常也将从函数中吹出)。

在正常情况下
db
不能为空


唯一可行的方法是,如果新的
失败,则会出现更严重的问题。

在正常情况下
db
不能为空


唯一的方法是,如果新的
失败,那么您会遇到更严重的问题。

@Reed:在访问db.Users或调用userId.Count()或userId.First()时,会发生异常吗?我的理解是,由于LINQ查询的延迟执行,它在迭代或访问之前不会真正执行查询。@Chris:它会影响db.Users,因为它需要访问它来构建表达式树。它实际上不会遍历用户,但仍然会命中它…@Reed:在访问db.users或调用userId.Count()或userId.First()时会命中异常吗?我的理解是,由于LINQ查询的延迟执行,它在迭代或访问之前不会真正执行查询。@Chris:它会影响db.Users,因为它需要访问它来构建表达式树。它实际上不会遍历用户,但它仍然会命中它。。。