当我说这
using (Entities db = new Entities())
{
return db.TableName.AsQueryable().ToList();
}
我是否绕过了 using 块的功能,因为我返回了一些东西,并且该方法在退出 using 块之前退出,所以我认为 using 块不会达到其目的并处置资源。
这个对吗?
当我说这
using (Entities db = new Entities())
{
return db.TableName.AsQueryable().ToList();
}
我是否绕过了 using 块的功能,因为我返回了一些东西,并且该方法在退出 using 块之前退出,所以我认为 using 块不会达到其目的并处置资源。
这个对吗?
你错了;它将被处置。
该using
语句编译为try
/finally
块,该块将原始对象置于finally
块中。
finally
块总是被执行,即使try
块内的代码返回了一个值或抛出了异常。
using
语句将Dispose
在返回值之前调用 db 对象。
不, using 块将强制触发 Dispose 对象。
http://www.devx.com/dotnet/Article/33167
http://msdn.microsoft.com/en-us/library/yh598w02(VS.80).aspx
您的 using 语句确实会成功。它类似于以下内容(这是 C# 编译器将 using 语句翻译成的内容:
Entities db = new Entities();
try
{
return db.TableName.AsQueryable().ToList();
}
finally
{
((IDisposable)db).Dispose();
}