为什么程序主方法是静态的?

时间:2015-10-23 15:26:27

标签: c# static main-method

我一直认为(假设)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();

   }

}

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

我说错了吗?因为我只是出于好奇而搜索了这一点,并在互联网上找到了不同的答案。

这个解释是否正确,主要方法是静态的?

1 个答案:

答案 0 :(得分:1)

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

  

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

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

  

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

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

  

程序的所有实例将共享相同的Main方法...

取决于您对术语“分享”的理解。所有对象都有方法,是的。

  

......所以总会有一个起点。

背后的原因是错误的。您有许多Program的实例,但这与方法的数量无关。