摆脱虚空方法?

28 c# coding-style

我有这个方法(修改后的代码):

public static void PublishXmlForCustomTypes(MyOwnClass DefaultOutputInformation)
{
    if (DefaultOutputInformation != null)
    {
        ///lot of code
    }
}
Run Code Online (Sandbox Code Playgroud)

我的整个代码都在if语句中,在考虑之后,我改为:

public static void PublishXmlForCustomTypes(MyOwnClass DefaultOutputInformation)
{
    if (DefaultOutputInformation == null)
    {
        return;
    }
    ///lot of code
}
Run Code Online (Sandbox Code Playgroud)

就我测试它而言,它似乎是完全相同的,但事实确实如此吗?我的意思是,"返回"声明让我们脱离了方法吗?

Gui*_*shy 42

这是完全相同的,第二个版本是要走的路:)

  • 问题是"这是相同的吗?" 它是,但第二个解决方案真的更优雅,这就是...... (3认同)
  • 支持者 - 我不明白这是*正确的*答案。如果#2 是“要走的路”,为什么会这样呢? (2认同)

Jon*_*eet 7

是的,这绝对没问题.

有些人教条地坚持"每个方法一个出口点" - 这对于确保你总是在C中的函数结束时进行适当数量的清理是相当棘手的,例如......但它是在C#中没有必要.

就个人而言,我认为一旦你知道你已经完成了一个方法中你真正想要的所有工作,就应该回来.使用try/finallyusing声明执行任何额外的"清理,但我退出"工作.


Dav*_*ras 6

yesreturn让你摆脱这个方法;如果你有一个finally块并且你从该块调用 return try,那么该finally块无论如何都会被执行。