c#構(gòu)造初始化的順序淺析
這個很基礎(chǔ)的知識,但我至今才意識到它。想想也很失敗。
直接上代碼:很簡單
public class Base
{
int i=0;
public Base()
{
System.Console.WriteLine("我是基類構(gòu)造器");
}
}
class Program
{
static void Main(string[] args)
{
Base d = new Base();
}
}
對于上面的代碼。是先執(zhí)行構(gòu)造器,還是先初使化字段 i 變量呢?其實只要意識到這個問題,也就很容易試出來,它應(yīng)當(dāng)是先初使化字段 i 變量。
那么現(xiàn)在如果Base 派生出一個子類,那它的構(gòu)造順序又是怎么樣的呢?
/// <summary>
/// 基類
/// </summary>
public class Base
{
public int baseint = 100;
public Base()
{
System.Console.WriteLine("構(gòu)造器:我是基類構(gòu)造器");
}
private class Inner
{
public Inner()
{
System.Console.WriteLine("字段:我是基類Inner");
}
}
/// <summary>
/// 字段初使化
/// </summary>
private Inner inner = new Inner();
}
/// <summary>
/// 子類
/// </summary>
class Derived : Base
{
public Derived()
{
System.Console.WriteLine("構(gòu)造器:我是子類構(gòu)造器");
}
private class Inner
{
public Inner()
{
System.Console.WriteLine("字段:我是子類Inner");
}
}
/// <summary>
/// 字段初使化
/// </summary>
private Inner inner = new Inner();
}
所以說它的執(zhí)行順序為:子類字段-父類字段-父類構(gòu)造器-子類構(gòu)造器
相關(guān)文章
c#動態(tài)類型,及動態(tài)對象的創(chuàng)建,合并2個對象,map實例
下面小編就為大家?guī)硪黄猚#動態(tài)類型,及動態(tài)對象的創(chuàng)建,合并2個對象,map實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
在C#中根據(jù)HardwareID獲取驅(qū)動程序信息的實現(xiàn)代碼
這篇文章主要介紹了C#中根據(jù)HardwareID獲取驅(qū)動程序信息的實現(xiàn)代碼,需要的朋友可以參考下2016-12-12
C#過濾DataTable中空數(shù)據(jù)和重復(fù)數(shù)據(jù)的示例代碼
這篇文章主要給大家介紹了關(guān)于C#過濾DataTable中空數(shù)據(jù)和重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作
這篇文章主要介紹了C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

