“return new MyClass();”之间有什么不同?和“MyClass mc = new MyClass(); return mc;”

时间:2014-05-05 08:45:51

标签: c# .net

类的以下方法之间是否存在差异:

public MyClass GetMyClassInstance()
{
    return new MyClass();
}

public MyClass GetMyClassInstance()
{
    MyClass myClassObj = new MyClass();
    return myClassObj;
}

第二个选项是内存泄漏证明吗?或者更确切地说,这两种方法对内存泄漏的影响是什么?

我可能错了,但我知道,这两种方法都没有内存泄漏问题。但仍需要听取专家的意见。

1 个答案:

答案 0 :(得分:7)

根本没有显着差异。后者稍微宽松一点,但允许您在返回之前轻松检查调试器中的值 - 这是唯一的区别。

在内存泄漏方面肯定没有区别。我希望在优化的JIT编译器下运行的优化构建中,您最终可能会得到完全相同的本机代码。 (即使在优化构建下,IL也略有不同,因为在第二种形式中有一个额外的stloc / ldloc对,但是JIT可以很容易地优化它。)

你应该使用你认为最方便的形式,基本上。