c# 衍生類和基類的構造順序

public class MyDeriveClass
        :MyBaseClass
    {
        public MyDeriveClass()
            :base()
        {

        }

        int derive_int = 1;
    }
    public class MyBaseClass
    {
        public MyBaseClass()
        {

        }

        int base_int = 1;
    }

var cls = new MyDeriveClass();
調用順序以下:markdown

  1. derive_int = 1;
  2. base_int = 1;
  3. MyBaseClass();
  4. MyDeriveClass();ide

    考慮MyBaseClass()中有一個屬性A爲abstract
    在MyBaseClass()中能夠直接操做這個屬性A,
    只須要(也應該如此設計)DeriveClass作好override函數

    你須要注意的問題是:spa

    在Field的聲明處初始化 和 在構造函數中初始化 的順序是不同的。
    在Field的聲明處初始化 老是比 構造函數要早執行,且早於基類的Field的聲明處初始化和基類的構造函數。設計

相關文章
相關標籤/搜索