c#語言相比其他支援clr的語言來說,對於值型別的構造有個特殊的地方,即不允許值型別有無引數的建構函式
所以當乙個值型別沒有提供任何建構函式的時候,是不能夠對字段在定義中進行初始化,如下:
public struct point
因為對於成員變數申明的同時進行初始化,編譯器會在建構函式中將初始化的**加入,如果沒有建構函式,編譯器會預設生成乙個無引數的建構函式,這個就與值型別不支援無引數建構函式相衝突了。
至於為什麼值型別不允許有無參建構函式,應該還是微軟防止程式設計師不去顯式呼叫建構函式,對於值型別的變數來說,如果不去顯式呼叫建構函式的話,編譯器不會在生成的il**中新增呼叫建構函式的**的。
關於值型別建構函式的使用說明,在c# via clr上有比較詳細的說明。
列舉 建構函式 注意事項
列舉 定義 列舉是乙個被命名的整形常數的集合,用於宣告一組帶識別符號的常數。類似人的性別 男和女,一周的星期只能是七天中的乙個。類似這種當乙個變數有幾種固定可能的取值時。就可以將它定義為列舉型別。列舉被設計成是單例模式,即列舉型別會由jvm在載入的時候,例項化列舉物件,你在列舉類中定義了多少個就會例...
建構函式的注意事項
1.description 描述建構函式是建立類物件,並且在建立完成前,對類進行初始化的特殊函式。在類中的表現為,和類名一致。2.attribute 特徵 1 方法名必須和類名一致 2 建構函式木有返回值。一切跟返回值相關的修飾都別寫,也不要用void來修飾!3 建構函式是可以過載的。4 如果不寫建...
C 建構函式對this的注意事項
vs2019報錯錯誤 node node char c,int n,node left,node right this c c num n left left right right 正確 node node char c,int n,node left,node right c c num n l...