變量初始化,基類構造器,基類構造器中調用虛函數,子類構造器

正確順序:變量初始化代碼,基類構造器,基類構造器中調用虛函數,子類本身的構造器。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
相關文章
相關標籤/搜索