2010-03-12 87 views

回答

67

第一個是不是在C#中的法律。在構造函數冒號後面可以出現的唯一兩項是basethis

所以我會去第二個。

+9

謝謝你,來自C++我想知道語法A(成員初始化列表)是否也適用於C#。 – 2015-10-12 16:41:05

15

您是不是指C++而不是C#?

對於C++,初始化列表比分配爲一對夫婦的原因更好:

  • 對於POD類型(整數,浮點,等..),優化器可以經常做幕後更高效的memcpy當你提供數據的初始化器時。
  • 對於非POD類型(對象),只通過一個構造即可獲得效率。在構造函數中賦值時,編譯器必須首先構造對象,然後在單獨的步驟中分配它(這也適用於POD類型)。
0

C#有一個名爲Object Initializer的功能。您可以提供編譯器用來初始化指定成員的值,並調用默認構造函數。爲了這個工作,你需要有一個公共的默認構造函數。