日期:2014-05-18  浏览次数:20880 次

在派生类中调用基类构造函数
在派生类中调用基类构造函数。  
//   keywords_base2.cs
using   System;
public   class   BaseClass
{
        int   num;

        public   BaseClass()
        {
                Console.WriteLine( "in   BaseClass() ");
        }

        public   BaseClass(int   i)
        {
                num   =   i;
                Console.WriteLine( "in   BaseClass(int   {0}) ",   num);
        }
}

public   class   DerivedClass   :   BaseClass
{
        //   该构造器调用   BaseClass.BaseClass()
        public   DerivedClass()   :   base()
        {
        }

        //   该构造器调用   BaseClass.BaseClass(int   i)
        public   DerivedClass(int   i)   :   base(i)
        {
        }

        static   void   Main()
        {
                DerivedClass   dc   =   new   DerivedClass();
                DerivedClass   dc1   =   new   DerivedClass(1);
        }
}

/**//*
控制台输出:
in   BaseClass()
in   BaseClass(1)
*/


如果我在   //   该构造器调用   BaseClass.BaseClass()
        public   DerivedClass()   :   base()
        {
        }

我发现   public   DerivedClass()   :   base()
        {
        }
  和   public   DerivedClass()    
        {
        }
功能一样,那么base()在这里还有什么用????
难道不生成基类,可以生成子类吗,c#好像没有这个功能,所有必须要调用基类的构造函数

------解决方案--------------------
如果没有明确指明base,编译器会自动添置调用基类的默认构造器,即不带参数的那个,所以

public DerivedClass() : base()


里面的base()是多余的