使用using语句在此方法中返回什么?

时间:2010-04-16 16:01:55

标签: c#

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在正常情况下,db不能为空。

唯一的方法是new失败,在这种情况下你会遇到更严重的问题。