为什么实例化时,有参数,但是却调用默认没有参数的构造函数呢?有代码
这些代码是“C#入门经典”的例子,但是与书上不一样,按理说,对象实例化时,如果有参数。
但是为什么没有调用带参数的基类构造函数呢?而是调用了默认的没有参数的构造函数,这是为什么呢?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace p171
{
    public class MyBaseClass
    {
        public MyBaseClass()
        {
            Console.WriteLine("基类:MyBaseClass()");
        }        public MyBaseClass(int i)
        {
            Console.WriteLine(i.ToString());
            Console.WriteLine("基类:MyBaseClass (int i)");
        }
    }    public class MyDerivedClass:MyBaseClass
    {
        public MyDerivedClass()
        {
            Console.WriteLine("派生类:MyDerivedClass()");
            
        }        public MyDerivedClass(int i)
        {
            Console.WriteLine(i.ToString());
            Console.WriteLine("派生类:MyDerivedClass(int i)");        }        public MyDerivedClass(int i,int j)
        {
            Console.WriteLine("派生类:MyDerivedClass (int i,int j)");
        }
    }    class Program
    {
        static void Main(string[] args)
        {
            MyDerivedClass myobj = new MyDerivedClass(88);
            Console.ReadKey();
        }
    }
}

解决方案 »

  1.   

    public MyDerivedClass(int i) : base(i)
            {
                Console.WriteLine(i.ToString());
                Console.WriteLine("派生类:MyDerivedClass(int i)");        }
      

  2.   

    继承的话你要用base调用基类构造函数啊。public MyDerivedClass(int i) [color=#FF0000]: base(i)
            {
                Console.WriteLine(i.ToString());
                Console.WriteLine("派生类:MyDerivedClass(int i)");        }
      

  3.   

    基类的构造函数只能调用默认无参吗?如果想调用非默认就要用 base()指定,是这样吗?我记得“c#入门经典”不是这样讲的呀?
    手底下没有书,没法查,再问。