C# 基类派生类构造函数执行顺序分析

时间:2023-03-09 15:57:17
C# 基类派生类构造函数执行顺序分析
using System;

namespace ConsoleApp1
{
class Program{
static void Main(string[] args){
B b = new B();
}
}
class A{
public A(){
Console.WriteLine("基类的构造函数初始化!");
} }
class B:A{
public B(){
Console.WriteLine("派生类构造函数初始化!");
}
}
}

输出:

C# 基类派生类构造函数执行顺序分析

分析:

1.先根据层次链找到最顶层的基类,先调用基类构造函数,再依次调用各级派生类构造函数,

2.派生类会隐式地调用父类构造函数

显示调用父类构造函数:

using System;

namespace ConsoleApp1
{
class Program{
static void Main(string[] args){
B b = new B();
}
}
class A{
public A(){
Console.WriteLine("基类的构造函数初始化!");
} }
class B:A{
public B():base(){
Console.WriteLine("派生类构造函数初始化!");
}
}
}

析构函数则与构造函数相反

派生类没有构造函数则隐式调用基类无参构造函数:

using System;

namespace ConsoleApp1
{
class Program{
static void Main(string[] args){
B b = new B();
Console.WriteLine(b.getNum());
}
}
class A{
public int a{get;set;}
public A(){
Console.WriteLine("基类的构造函数初始化!");
this.a=;
} }
class B:A{
//public B(){
// Console.WriteLine("派生类构造函数初始化!");
//}
public int getNum(){
return this.a;
}
}
}

C# 基类派生类构造函数执行顺序分析