在使用声明之外返回内部?

时间:2014-02-03 13:48:16

标签: c# return using-statement

我应该在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;
}

2 个答案:

答案 0 :(得分:4)

要么是好的。把它放在外面并没有特别的技术理由,所以最适合你的风格。从using语句中返回类似于从附加try的{​​{1}}块中返回;无论哪种方式,都会执行finally块(在finally的情况下显式或隐式)。

答案 1 :(得分:3)

没关系。实际上,同样的事情将会发生 - 也就是说,在Dispose()对象上调用db方法的过程中,您要返回的数据将被保存在临时数据中。

不同的商店更喜欢不同的编码标准。例如,一些商店坚持除最后一行外没有退货;在这种情况下,需要使用第二种替代方案。我更喜欢第一个片段,因为它使用更少的变量传达相同的含义,并且整体代码更少。