遇到这种情况大家怎么处理? 在虚基类的构造要使用到派生类构造器中的参数,
因为基类的构造器是在派生类构造器执行前执行的,遇到这种问题大家是怎么解决的...
    class ClassMain
    {
        static void Main(string[] arg)
        {
            A a = new A1(1);
            Console.Read();
        }    }    public abstract class A
    {
        protected int i = 0;        public A()
        {
            Console.WriteLine("i = " + i.ToString()); 
        }
    }    public class A1 : A
    {
        public A1(int i)
        {
            base.i = i;
        }
    }运行结果: i = 0

解决方案 »

  1.   

    TO soaringbird(飞翔鸟) 我就是想知道大家一般都是采用什么办法的,
    就上面这个例子,大家如何实现打印结果为"i = 1"呢?
    条件是:
    1.实例化派生类A1的时候必须传参数(int i);
    2.在基类中实现打印出派生类构造函数中传进去的参数i;
      

  2.   

    如果仅仅是要求这样,下面这么做就行了
    public abstract class A
            {
                protected int i = 0;            public A(int i)
                {
                    this.i = i;
                    Console.WriteLine("i = " + this.i.ToString());
                }        }        public class A1 : A
            {
                public A1(int i):base(i)
                {
                    
                    
                }
            }
      

  3.   

    你的错误在没有理解类的构造顺序,一般是先构造基类,再构造子类所以,先调用了A()
     i 没有被覆值,自然是0,在调用A1() i覆值为1