在using语句之外由内而外返回?

Fre*_*red 4 c# return using-statement

我应该在return内部还是外部进行using声明?

public IEnumerable<Foo> GetData()
{
    using (var db = new DbContext())
    {
        return db.Foo().ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public IEnumerable<Foo> GetData()
{
    IEnumerable<Foo> foo;

    using (var db = new DbContext())
    {
        foo = db.Foo().ToList();
    }

    return foo;
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

都可以。没有特殊的技术原因将其放在外面,因此请最适合您的风格。从using语句内部返回类似于从try带有finally附加语句的块内部返回。无论哪种方式,都会执行该finally块(在情况下为显式或隐式using)。


das*_*ght 4

不要紧。实际上,同样的事情将会发生 - 即,在调用对象的方法期间,您将要返回的数据将被保存在临时文件Dispose()db

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