這些天,我只是在OOPS上做一些頭腦風暴,突然之間出現了一個問題。我發現它是相關的,所以我決定問社區。問題是:靜態構造函數不能有返回類型,但靜態方法必須在C#中有返回類型
靜態構造函數不能有返回類型(int,字符串等),但靜態方法必須在C#中有返回類型。
c#編譯器如何區分通過編譯傳遞的情況?
static Class staticClass
{
public static staticClass(){} //right
public static int staticClass(){} //wrong
public static int staticMethod(){} //right
}
對於第二句,關鍵在於有一些語法指示代碼塊返回的內容,即使它沒有明確表示,當它是一種方法。第二個例子被解釋爲一個與該類名稱相同的方法,這正是因爲它具有已定義的返回類型(如果它是'void',你會得到一個類似的錯誤)。解析器認爲第一個示例是具有多餘可訪問性修飾符的靜態構造函數,而不是具有缺少返回類型的成員,因爲沒有返回類型。 – Servy
是的, 我的排字錯誤public static StaticClass(){} //是錯的,我們不能在靜態構造函數中有修飾符 –