有没有办法:实例化一个子类的时候,即调用重载的构造函数(有参数),又调用自己的默认的构造函数(无参数)。
=========================
public class Class1
{
  public Class1()
  { 
    dosth();
  }
  public Class1(string s) : this()
  {
     dosthwith(s);
  }
    public void dosth()
  {
      Console.WriteLine(this.GetType().ToString());
  } 
    protected void dosthwith(string s)
    { 
        Console.WriteLine(s);
    }}public class SubClass1 : Class1

  public SubClass1() : base()
  {
      dosthwith_SubClass();
  }    public SubClass1(string s)
        : base(s)
    {
        Console.WriteLine(this.GetType().ToString());
    }    private void dosthwith_SubClass()
    {
        Console.WriteLine("dosthwith_SubClass");
    }}public class TestClass
{
  public TestClass()
  {
      new SubClass1("x");//我还想调用SubClass1 的默认构造函数,怎么写?
  }
    
}

解决方案 »

  1.   

    //应该这么写:
    public class SubClass1 : Class1

      public SubClass1() : this("")
      {
       }    public SubClass1(string s)
            : base(s)
        {
           dosthwith_SubClass();
          Console.WriteLine(this.GetType().ToString());
        }    private void dosthwith_SubClass()
        {
            Console.WriteLine("dosthwith_SubClass");
        }}
      

  2.   

    Class1 c1 = new SubClass1("ss");
      

  3.   

    不太明白你的意思,是不是这样
    public SubClass1()
                : base("X")
            {
                dosthwith_SubClass();
            }  
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  4.   

    public class TestClass
    {
      public TestClass()
      {
          new SubClass1("x");//有参数构造函数
          new SubClass1();//无参数构造函数
      }
    }
    构造函数其实想简单点,它就是一个函数而已,你想调用哪个构造,根据你的需要(后者说创建对象的条件,)定,构造函数并不存在默认构造函数的说法,不同的构造函数通过不同的方式实现同一个类,注意是同一个类,继承类首先应该做的是实现基类,其次才是实现额外的东东
      

  5.   

    不太明白你要干什么,TestClass与SubClass没有直接关系。按照大致理解,主要是你的SubClass组织的不合理,比较合理的写法,应该如下:
    public class SubClass : Class1
    {
    public SubClass() : this( null )
    {
    }public SubClass1(string s)
    : base(s)
    {
         if( s == null )
         {
              //process here
         }
         else
             Console.WriteLine(this.GetType().ToString());
    }private void dosthwith_SubClass()
    {
    Console.WriteLine("dosthwith_SubClass");
    }}