C# “returnnewmyclass();”和“MyClass mc=newmyclass();return mc;”之间有什么不同

C# “returnnewmyclass();”和“MyClass mc=newmyclass();return mc;”之间有什么不同,c#,.net,C#,.net,类的以下方法之间是否存在差异: public MyClass GetMyClassInstance() { return new MyClass(); } 及 第二个选项是内存防泄漏吗?或者更确切地说,这两种方法对内存泄漏有什么影响 我可能错了,但我知道,这两种方法都没有内存泄漏的问题。但仍然需要听取这里的专家的意见 没有显著差异。后者稍微有些冗长,但允许您在返回值之前轻松地在调试器中检查该值——这是唯一的区别 在内存泄漏方面肯定没有区别。我希望在优化JIT编译器下运行的优化构建中,您

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

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

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


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

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

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


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

我认为两者都是一样的。谢谢你的回复。在第一种形式中,GC的引用计数从被调用者开始。在第二种情况下,引用计数从GetMyClassInstance本身开始。@Sivaraman:.NET不使用引用计数。它使用可达性。是的,我更喜欢第一个,因为在那里我可以保存一行代码!谢谢你的回复。
public MyClass GetMyClassInstance()
{
    MyClass myClassObj = new MyClass();
    return myClassObj;
}