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