本文最后更新于 2019年 5月 4號 下午 2點(diǎn) 26分平匈,并同步發(fā)布于 :
大家都知道設(shè)置類成員的初始值有兩種方法 :
成員初始化語法
構(gòu)造函數(shù)
那么這兩種方式有什么區(qū)別 ?
我們先看一下反編譯后的代碼
反編譯前 :
反編譯后 :
這看起來沒什么變化啊 ! (#掀桌)
看來只有看一下反編譯之后的 IL
代碼了 :
我們發(fā)現(xiàn) 賦值初始化的代碼被移動(dòng)到了構(gòu)造函數(shù)中骚露,并且在調(diào)用基類構(gòu)造函數(shù)之前執(zhí)行。而原本構(gòu)造函數(shù)中的代碼則在調(diào)用基類構(gòu)造函數(shù)之后執(zhí)行惨缆。
反編譯后的代碼完美解釋了以下結(jié)論 :
- 成員賦值初始化 先于 構(gòu)造函數(shù)
- 成員賦值初始化 先從派生類 再到 基類
詳細(xì)的成員初始化順序請參考另一篇文章 『C#』成員初始化順序
---END---