創(chuàng)新互聯www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯公司成立于2013年,公司以成都網站建設、做網站、系統開發(fā)、網絡推廣、文化傳媒、企業(yè)宣傳、平面廣告設計等為主要業(yè)務,適用行業(yè)近百種。服務企業(yè)客戶成百上千,涉及國內多個省份客戶。擁有多年網站建設開發(fā)經驗。為企業(yè)提供專業(yè)的網站建設、創(chuàng)意設計、宣傳推廣等服務。 通過專業(yè)的設計、獨特的風格,為不同客戶提供各種風格的特色服務。小編給大家分享一下c#類成員初始化順序是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!
這里直接給出C#類成員一般初始化順序:
為什么說是“一般”初始化順序呢?因為根據類結構的不同,類成員的初始化順序并不是一成不變的。但是這個順序是基礎,可以推導出其他特殊的初始化順序。下面我們就來看兩種特殊的情況:
static void Main(string[] args) { Console.WriteLine("---------------一般初始化順序---------------"); var child1 = new Child1(); Console.WriteLine("\n---------------子類靜態(tài)字段初始化需要使用父類靜態(tài)字段時初始化順序---------------"); var child2 = new Child2(); Console.WriteLine("\n---------------子類靜態(tài)構造函數中使用父類靜態(tài)字段時初始化順序---------------"); var child3 = new Child3(); Console.ReadKey(); } public class Child1 : Base1 { public static Display ChildStatic = new Display("Child static filed"); private Display _childFiled = new Display("Child filed"); static Child1() => Console.WriteLine("Child static ctor"); public Child1() => Console.WriteLine("Child ctor"); } public class Child2 : Base2 { ////// 子類靜態(tài)字段初始化需要使用父類靜態(tài)字段 /// public static Display ChildStatic = new Display("Child static filed", () => BaseStatic); private Display _childFiled = new Display("Child filed"); static Child2() => Console.WriteLine("Child static ctor"); public Child2() => Console.WriteLine("Child ctor"); } public class Child3 : Base3 { public static Display ChildStatic = new Display("Child static filed"); private Display _childFiled = new Display("Child filed"); ////// 子類靜態(tài)構造函數中使用父類靜態(tài)字段 /// static Child3() { Console.WriteLine("Child static ctor"); var baseStatic = BaseStatic; } public Child3() => Console.WriteLine("Child ctor"); } ////// 3個Base類相同,這里是為了演示靜態(tài)成員的初始化 /// public class Base1 { public static Display BaseStatic = new Display("Base static filed"); private Display _baseFiled = new Display("Base filed"); static Base1() => Console.WriteLine("Base static ctor"); public Base1() => Console.WriteLine("Base ctor"); } public class Base2 { public static Display BaseStatic = new Display("Base static filed"); private Display _baseFiled = new Display("Base filed"); static Base2() => Console.WriteLine("Base static ctor"); public Base2() => Console.WriteLine("Base ctor"); } public class Base3 { public static Display BaseStatic = new Display("Base static filed"); private Display _baseFiled = new Display("Base filed"); static Base3() => Console.WriteLine("Base static ctor"); public Base3() => Console.WriteLine("Base ctor"); } public class Display { public Display(string msg, FuncdisplayFunc = null) { Console.WriteLine(msg); var display = displayFunc?.Invoke(); } }