Theme NexT works best with JavaScript enabled

ShunNien's Blog

不積跬步,無以致千里;不積小流,無以成江海。

0%

C# 中繼承的執行順序

在巢狀繼承中,建構式以及設定式的執行順序是不太相同的,以下針對這部分,使用個簡單範例來說明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void Main()
{
Second obj = new Second();
}

class Ref
{
public Ref(string str)
{
Console.WriteLine(str);
}
}

class Base
{
public Ref BaseString = new Ref("Base 初始設定");
public Base()
{
Console.WriteLine("Base 建構式");
}
}

class First : Base
{
public Ref firstString = new Ref("First 初始設定");
public First()
{
Console.WriteLine("First 建構式");
}
}

class Second : First
{
public Ref SecondString = new Ref("Second 初始設定");
public Second()
{
Console.WriteLine("Second 建構式");
}
}

其執行順序是繼承的最末端到基底的方向(子到父),執行初始設定,再由基底到繼承末端(父到子)執行建構式,執行結果如下:
result

可由此張流程圖看出:


graph TD
A(Second 初始設定)-->B(First 初始設定)
B-->C(Base 初始設定)
C-->D(Base 建構式)
D-->E(First 建構式)
E-->F(Second 建構式)

歡迎關注我的其它發布渠道