C#中,Con 是类;
Con[][] cons = new Con[2][];
B:Con;
cons[0][0] = new B();
我的问题是 cons是基类声明的 怎么由派生类new呢感激涕零哈.

解决方案 »

  1.   

    这是面向对象中的多态,可以把基类的引用指向派生类的实例. 但这时基类的对象只能访问基类中的成员不能访问派生类中的成员.
    如:C#中的类都继承自System.Object, 所以所有的类实例都能赋给一个object变量.
      

  2.   

    我的问题是 cons是基类声明的 怎么由派生类new呢 
    ==
    声明了一个基类的引用,但指向一个派生类的对象因为任何一个派生类的对象都可以看做是一个基类的对象比如人 a = new 男人();肯定正确因为任何一个男人都是人
      

  3.   


    男人 b = new 人(); //错误,因为,并不是所有的人都是男人,还有女人及“其他”//即:派生类可赋值给基类,反之则不然;
      

  4.   

    转载:
    public class A
    {
        public A() { }
    }public class B : A
    {
        public B() { }
    }
    新类(即派生类)将获取基类的所有非私有数据和行为以及新类为自己定义的所有其他数据或行为。因此,新类具有两个有效类型:新类的类型和它继承的类的类型。在上面的示例中,类 B 既是有效的 B,又是有效的 A。访问 B 对象时,可以使用强制转换操作将其转换为 A 对象。强制转换不会更改 B 对象,但您的 B 对象视图将限制为 A 的数据和行为。将 B 强制转换为 A 后,可以将该 A 重新强制转换为 B。并非 A 的所有实例都可强制转换为 B,只有实际上是 B 的实例的那些实例才可以强制转换为 B。如果将类 B 作为 B 类型访问,则可以同时获得类 A 和类 B 的数据和行为。对象可以表示多个类型的能力称为多态性.
      

  5.   

    建议楼主详细阅读vs自带的c#文档
    在 MSDN Online 上的位置是:http://msdn.microsoft.com/vcsharp/programming/language/default.aspx在 Visual Studio 中的位置是:Microsoft Visual Studio 2005 安装目录下的 VC#\Specifications\2052\ 目录中