关于使用块返回的最佳实践

aba*_*hev 8 c# coding-style using-statement

哪种方式更好的做法:从using语句中的方法返回一个值或者之前声明一个变量,将其设置在内部并在之后返回?

public int Foo()
{
  using(..)
  {
     return bar;
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

public int Foo()
{
  var b = null;
  using(..)
  {
    b = bar;
  }
  return b;
}
Run Code Online (Sandbox Code Playgroud)

Sco*_*vey 9

我更喜欢第一个例子.变量更少,代码行更少,更易于遵循,更易于维护......

public int Foo()
{
  using(..)
  {
     return bar;
  }
}
Run Code Online (Sandbox Code Playgroud)


jas*_*son 5

遵循"少即是多"原则(实际上只是KISS的变体),前者.维护的代码行数较少,语义没有变化,可读性也没有损失(可以说这种风格更容易阅读).


Sta*_* R. 5

使用Statement - MSDN

using语句确保即使在对象上调用方法时发生异常,也会调用Dispose.您可以通过将对象放在try块中然后在finally块中调用Dispose来实现相同的结果 ; 实际上,这就是编译器如何翻译using语句.

来自try-finally(C#参考)

最后用于保证语句代码块的执行, 而不管前面的try块是如何退出的.

要回答你的问题,是的,可以从using语句返回.