我应该在return
声明内外进行using
吗?
public IEnumerable<Foo> GetData()
{
using (var db = new DbContext())
{
return db.Foo().ToList();
}
}
或
public IEnumerable<Foo> GetData()
{
IEnumerable<Foo> foo;
using (var db = new DbContext())
{
foo = db.Foo().ToList();
}
return foo;
}
答案 0 :(得分:4)
要么是好的。把它放在外面并没有特别的技术理由,所以最适合你的风格。从using
语句中返回类似于从附加try
的{{1}}块中返回;无论哪种方式,都会执行finally
块(在finally
的情况下显式或隐式)。
答案 1 :(得分:3)
没关系。实际上,同样的事情将会发生 - 也就是说,在Dispose()
对象上调用db
方法的过程中,您要返回的数据将被保存在临时数据中。
不同的商店更喜欢不同的编码标准。例如,一些商店坚持除最后一行外没有退货;在这种情况下,需要使用第二种替代方案。我更喜欢第一个片段,因为它使用更少的变量传达相同的含义,并且整体代码更少。