在c#中调用函数而不创建对象

本文关键字:创建对象 函数 调用 | 更新日期: 2023-09-27 17:49:27

下面的程序中这两种情况有什么区别吗?

static void Main(string[] args)
{
     //Case 1:
     new Program().a();    
     //Case 2:
     Program p = new Program();
     p.a();
}
void a()
{
     // Do some stuff
}

在c#中调用函数而不创建对象

在第一种情况下,您不将程序对象存储在局部变量中。函数被执行,但您可以再访问调用该操作的对象。

在第二种情况下,您将对象存储在一个局部变量中,并再次调用该方法。方法被执行,您可以稍后再次访问相同的对象。

所以这取决于你要做什么。关于执行的方法,没有区别。您必须考虑是否在代码的其他地方再次需要Program对象。然后你必须把它存储在一个变量中。否则你可以像第一个例子那样做

No。当你调用new Program()时,你是在创建一个对象。p只是对该对象的引用,它在内存使用或性能方面几乎没有增加任何东西。

考虑到代码的风格和可读性,建议避免使用像new Program().a();这样的语句——它使代码更难调试,因为你不能在你想要的语句上放置一个断点,也不能告诉你是什么导致了异常。
它也不太清楚你在做什么——你可能需要再读一遍以完全理解创建了什么,以及执行了什么并返回了什么

No。(除此之外,后者在调试时可能会稍微方便一些。)

我假设上面的代码是所有代码。当然,如果您随后使用p做其他事情,那么您已经在两者之间做出了区别:-)。

只有一个区别(因为在这两种情况下都创建了一个新对象)—在第二种情况下,您仍然可以通过键入类似

的内容来访问它
p.AnotherMethod();
编辑:

如果你不想创建一个对象来调用方法"a",让这个方法为static