c#構造初始化的順序淺析
這個很基礎的知識,但我至今才意識到它。想想也很失敗。
直接上代碼:很簡單
public class Base
{
int i=0;
public Base()
{
System.Console.WriteLine("我是基類構造器");
}
}
class Program
{
static void Main(string[] args)
{
Base d = new Base();
}
}
對于上面的代碼。是先執(zhí)行構造器,還是先初使化字段 i 變量呢?其實只要意識到這個問題,也就很容易試出來,它應當是先初使化字段 i 變量。
那么現在如果Base 派生出一個子類,那它的構造順序又是怎么樣的呢?
/// <summary>
/// 基類
/// </summary>
public class Base
{
public int baseint = 100;
public Base()
{
System.Console.WriteLine("構造器:我是基類構造器");
}
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("構造器:我是子類構造器");
}
private class Inner
{
public Inner()
{
System.Console.WriteLine("字段:我是子類Inner");
}
}
/// <summary>
/// 字段初使化
/// </summary>
private Inner inner = new Inner();
}
所以說它的執(zhí)行順序為:子類字段-父類字段-父類構造器-子類構造器
相關文章
c#動態(tài)類型,及動態(tài)對象的創(chuàng)建,合并2個對象,map實例
下面小編就為大家?guī)硪黄猚#動態(tài)類型,及動態(tài)對象的創(chuàng)建,合并2個對象,map實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作
這篇文章主要介紹了C# 使用Fiddler捕獲本地HttpClient發(fā)出的請求操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

