下面是两种几乎完全相同的方法。我想知道上下文对象的处理方式和时间是否存在差异?
public List<Template> MethodVu()
{
List<Template> templates;
using (var context = new Entities())
{
templates = context.Templates.ToList();
}
return templates;
}
public List<Template> MethodDo()
{
using (var context = new Entities())
{
return context.Templates.ToList();
}
}
答案 0 :(得分:2)
没有区别。在这两种情况下,离开context.Dispose()
块时都会立即调用using
。将结果存储在变量中然后返回它或者只返回它的事实没有区别(与dispose无关,但在这个具体的例子中我猜测编译器无论如何都会优化它)。
是什么让你问这个问题?
更多详细信息:using
在以下意义上等同于try...finally
。
代码:
using (var context = new Entities())
{
return context.Templates.ToList();
}
......完全等同于:
{
var context = new Entities();
try {
return context.Templates.ToList();
}
finally {
if (context != null) { context.Dispose(); }
}
}
有关详情,请参阅the docs。