2011-10-07 80 views
1

我必须有2种不同的主要方法,1个没有任何参数,1个有string[] args,但是私有和静态?为什么Main必须是静态的才能接受命令行参数?

+2

你能举一个例子吗?我不太理解。 – Oded

+2

我不明白这个问题。为什么你不希望该方法必须是静态的? (为什么你会有两种版本的'Main'方法 - 如果你想接受参数,声明一个'string []'参数来包含它们,这是你应该有的方法的唯一版本。) –

+0

http: //social.msdn.microsoft.com/Forums/en-AU/clr/thread/199b7536-501b-4c8b-9fcb-289b158e1be6 – mellamokb

回答

10

不,您只需要有一个Main方法。事实上,如果你在一个类中有多个静态方法,我不相信你可以指定这个类作为入口点。

确实必须是静态的;该类不能是通用的,方法也不可以。它可以是:

  • 任何的易用性(如可以在类)
  • 空隙或具有int
  • 无参数的返回值或具有string[]

的参数类型它必须是静态的和非泛型的,否则CLR将不得不创建该类的一个实例或分别计算出您想要的类型参数。它没有足够的信息来作出这些决定 - 但它不需要任何关于非泛型类中的静态非泛型方法的信息。

12

为什么Main必须static 能够接受命令行参数

在那里,为您解决这个问题。

Main必须是静态的,这样才能在没有对象实例的情况下调用它。这是必要的,因为在创建任何实例之前调用Main

相关问题