-2

我一直认为(假设)该Main方法是静态的,因为您不能拥有它的多个实例(如果错了,请纠正我)。该Main方法是程序的起点,因此您只能拥有一个。

所以如果我有

class Program
{

   static void Main(String[] args)
   { // something
   }

}

class OtherClass
{

   void Test()
   { 
      Program p1 = new Program();
      Program p2 = new Program();
      Program p3 = new Program();
      Program p4 = new Program();

   }

}

Program 的所有实例都将共享相同的Main方法,因此总会有一个起点。

我对么?因为我只是出于好奇搜索了这个,并在互联网上找到了不同的答案。

对于静态的主要方法,这种解释是否也正确?

4

1 回答 1

1

如果入口点方法不是static,则需要先创建一个对象。那么问题来了:创建哪个类的对象?

我一直认为(假设) Main 方法是静态的,因为你不能拥有它的多个实例

你不能有方法的实例。方法驻留在CodeDLL 的部分中,不会复制到堆中。您只能在同一方法中运行多个线程。

Main 方法是程序的起点,因此您只能拥有一个。

和以前一样:如果我们考虑签名,只有一种方法,不管它是否是静态的,都是独立的,因为它们没有被实例化。

Program 的所有实例都将共享相同的 Main 方法...

取决于您对“共享”一词的理解。所有对象都会有方法,是的。

...因此总会有一个起点。

其背后的推理是错误的。您有很多实例,Program但这与方法的数量无关。

于 2015-10-23T15:38:38.940 回答