正確順序:變量初始化代碼,基類構造器,基類構造器中調用虛函數,子類本身的構造器。ide
基類構造器中調用的虛函數會起做用,由於此時對象已經構建好了,可是隻是執行了變量的初始化代碼,尚未通過子類本身的構造器的初始化。函數
using System; namespace ConsoleApp3 { class A { public A() { PrintFields(); } public virtual void PrintFields() { } } class B:A { int x = 1; int y; public B() { y = 1; } public override void PrintFields() { Console.WriteLine($"x={x}, y={y}"); } } interface IInterface { void test(); void test(int a); } class Program { static void Main(string[] args) { A b = new B(); } } }
結果spa
x=1, y=0