派生类实例化时1个参数,为何调用基类构造时,匹配的是无参构造呢            Console.WriteLine("调用1个参数的情况:");
            myderivedclass myobj = new myderivedclass(5);
这样调用时,有1个参数,我理解应该调用基类的构造时,也要匹配有1个参数的构造函数,但是实际上,却调用的是无参的构造函数,我真的不明白了。
namespace p176
{
    public class mybaseclass
    {
        public mybaseclass()
        {
            Console.WriteLine("mybaseclass:");
        }
        public mybaseclass(int i)
        {
            Console.WriteLine("mybaseclass(int i):");
        }
    }    public class myderivedclass:mybaseclass
    {
        public myderivedclass()
        {
            Console.WriteLine("myderivedclass:");
        }        public myderivedclass(int i )
        {
            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)
        {
            Console.WriteLine("调用1个参数的情况:");
            myderivedclass myobj = new myderivedclass(5);
            Console.WriteLine("调用2个参数的情况:");
            myderivedclass myobj2 = new myderivedclass(5, 6);
            Console.ReadKey();
        }
    }
}

解决方案 »

  1. 可以看看msdn,说得很清楚,我想大多数入门书也会写得很清楚。如果派生类型的构造函数没有调用base构造函数,则自动调用base类型的默认构造函数(默认构造函数就是没有参数的)。
      

  2. public myderivedclass(int i ):base(i)
            {
                Console.WriteLine("myderivedclass(int i):");
            }
            public myderivedclass(int i,int j):base(i,j)
            {
                Console.WriteLine("myderivedclass(int i,int j):");
            }
      

  3. 当基类中编写构造函数时,派生类没有指定调用构造哪个构造函数时无参的构造函数
    派生类中可以指定调用基类的某个构造函数,使用base关键字
      

类似问题 »