2011-10-07 82 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

相關問題