日期:2014-05-17  浏览次数:20819 次

关于构造函数的this和base
下面这段代码的构造函数执行顺序为什么是这样的?前面三步我可以理解,为什么会执行第4步?
    1.执行System.Object.Object构造函数。
    2.执行MyBaseClass.MyBaseClass(int i)构造函数。
?  3.执行MyDerivedClass.MyDerivedClass(int i, int j)构造函数。
?  4.执行MyDerivedClass.MyDerivedClass()构造函数
基类

public class MyBaseClass
{
    public MyBaseClass()
    {
        // ...
    }
    public MyBaseClass(int i)
    {
        // ...
    }
}

继承类

public class MyDerivedClass : MyBaseClass 

    public MyDerivedClass() : this(5, 6)
    {
        // ... 
    } 
    public MyDerivedClass(int i) 
    { 
        // ... 
    } 
    public MyDerivedClass(int i, int j) : base(5)
    { 
        // ... 
    }
}

用下面方法实例化

MyDerivedClass myObj = new MyDerived(2, 4);

------解决方案--------------------
引用:
下面这段代码的构造函数执行顺序为什么是这样的?前面三步我可以理解,为什么会执行第4步?
    1.执行System.Object.Object构造函数。
    2.执行MyBaseClass.MyBaseClass(int i)构造函数。
?  3.执行MyDerivedClass.MyDerivedClass(int i, int j)构造函数。
?  4.执行MyDerivedClass.MyDerivedClass()构造函数
基类

public class MyBaseClass
{
    public MyBaseClass()
    {
        // ...
    }
    public MyBaseClass(int i)
    {
        // ...
    }
}

继承类

public class MyDerivedClass : MyBaseClass 

    public MyDerivedClass() : this(5, 6)
    {
        // ... 
    }