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,因为它需要访问它来构建表达式树。它实际上不会遍历用户,但它仍然会命中它。。。