聲明結構的默認(無參數)構造函數是錯誤的。總是提供默認構造函數以將結構成員初始化為它們的默認值。在結構中初始化實例字段也是錯誤的。
如果使用 new 運算符創建結構對象,則會創建該結構對象,並調用適當的構造函數。與類不同,結構的實例化可以不使用 new 運算符。如果不使用 new,則在初始化所有字段之前,字段都保持未賦值狀態且對象不可用。
結構類型使用new不會分配托管堆分配內存而是調用構造函數初始化字段。結構的構造函數要么是有參數的,不可能是無參數,應為無參數是系統自己隱式添加的,就算有另外的構造函數,如果你顯示的聲明一個無參數的構造函數在結構里,將導致編譯錯誤。
結構體如果不用new初始化,也可以,但是在其使用前必須手動初始化他的每一個成員,否則編譯器將報錯。用new初始化,可自動將其中的每一個成員都置為零值。
struct屬於值類型,可以不用new,如果不new,結構體內的值就都是未賦值狀態,需要在使用之前賦值,不然編譯器會報錯。若new了,結構體會調用無參構造函數,會初始化內部的值,比如int就會初始化為0,現在使用編譯器就不會報錯了。
轉: https://www.cnblogs.com/tanding/archive/2012/06/26/2563546.html
https://zhidao.baidu.com/question/62698662.html