0

以下是两种几乎相同的方法。我想知道上下文对象的处理方式或时间是否有任何区别?

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();
  }
}
4

1 回答 1

2

没有不同。在这两种情况下,离开块context.Dispose()时都会立即调用。using您将结果存储在一个变量中然后返回它或只是返回它的事实没有区别(与处置无关,但在这个特定的例子中,我猜编译器无论如何都会优化它)。

是什么让你问这个问题?


More details:using等价try...finally于以下意义上的 a。

编码:

using (var context = new Entities())
  {
    return context.Templates.ToList();
  }

...完全等同于:

{
   var context = new Entities();
   try {
      return context.Templates.ToList();
   }
   finally {
      if (context != null) { context.Dispose(); }
   }
}

有关更多信息,请参阅文档

于 2012-10-11T01:06:55.510 回答