2012-06-03 284 views
4

好的,我們聽說struct不能有一個默認的無參數構造函數,這很好(http://stackoverflow.com/questions/333829/why-cant-i-define-a-default -constructor-FOR-A-結構式網)。但是文檔中提到「每個值類型都有一個默認構造函數,用於初始化該類型的默認值。」 from http://msdn.microsoft.com/en-us/library/s1ax56ch.aspx結構隱式默認構造函數與無參數構造函數

現在隱式默認構造函數和無參數默認構造函數有什麼區別?

回答

5

隱含的默認構造函數由編譯器自動創建的無參數構造函數。您無法創建無參數構造函數的原因是因爲默認的構造函數已經存在。我不知道他們爲什麼選擇這樣做,爲什麼你不允許重寫它。

+0

這是一樣的類,但你可以覆蓋它:) – Tarik

+0

正如它承認它只有真正的一半回答這個問題。 –

1

正如您在答案中指出的那樣,使用IL,您可以爲struct定義無參數的構造函數,但有些情況下不會調用它。

恕我直言,「隱式」構造函數只是一個邏輯的;內存被分配時被清零。

+1

你可以在我的問題中看到答案。我已經把它連接起來了:) – Tarik