//Class A
public abstract class A
    {
        public abstract void Proc();        public A:this("")
        {
        }        public A(String s)
        {
          
        }
     }//Class B继承Class A
class B : A
{
   public override void Proc()
   {
     ...
   }
}//调用
B b = new B("abcd");编译出错:“b”方法没有“1”个参数的重载
why? 而且输入new B( 时,只出现一个空的参数签名提示,看不见那个带参数的

解决方案 »

  1.   

    public abstract class A
        {
            public abstract void Proc(string msg);        public A() { }        public A(string s)
            {
                Proc(s);
            }
        }    public class B : A
        {
            public override void Proc(string msg)
            {
                MessageBox.Show(msg);
            }        public B(string msg)
                : base(msg)
            {
            }
        }
      

  2.   

    谢谢LeoMaya:------
    我试了这样可以,但是在class B中必须要声明public B(string msg):base(msg){}吗,难道不能继承class A的带参数构造函数吗?
      

  3.   

    但是父类的无参数构造函数为什么被继承了?语句B b=new B()显然执行了父类A的 public A() { }
      

  4.   

    B b = new B("abcd");,这句话的意思是用B的构造函数,构造一个b,你的B中没有B(String s)这样的构造函数当然会出错,记者给粉!!