c#中这两个方法调用有什么区别?

1 c# methods class console-application

例如,我有一些类,其中有一个void方法.

这是我的班级:

class MyClassTest
{
    public void Print()
    {
        Console.WriteLine("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

我是新手,有点困惑,这两个方法调用之间有区别吗?

这是我的主要方法

static void Main(string[] args)
{
    //first call
    MyClassTest ms = new MyClassTest();
    ms.Print();

    //second call
    new MyClassTest().Print();
}
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 5

在下面的例子中,当你想要保持对构造对象的引用并稍后用它执行一些进一步的操作时,你会想要这样做.

MyClassTest ms = new MyClassTest();
ms.Print();
Run Code Online (Sandbox Code Playgroud)

然而,在下面你的情况下就需要做到这一点,当你不再计较施工后所构造的对象,但在调用该方法只是有兴趣Print.

new MyClassTest().Print();
Run Code Online (Sandbox Code Playgroud)

这两种情况之间的细微差别在于,在被引用的对象执行进一步操作的情况下,它很可能比不再引用的对象晚被销毁,即上面的第二个示例,因为GC(垃圾收集器)将会发现它没有参考,因此决定摆脱它.

  • 我会进一步评论说,如果你发现自己经常做第二次,你很可能做错了.如果您不关心这些问题,请使用静态方法 (3认同)