What's different between "return new MyClass();&quo

本文关键字:MyClass new return quo between different What quot | 更新日期: 2023-09-27 18:01:54

一个类的下列方法有什么区别吗?

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

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

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

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

What's different between "return new MyClass();&quo

根本没有显著差异。后者稍微冗长一些,但允许您在返回值之前轻松地在调试器中检查值——这是唯一的区别。

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