0

为什么我不能将基类转换为派生类?另外,为什么编译器没有捕捉到这个?

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            Parent p = new Parent();
            Child c = (Child)p;

        }
    }

    class Parent
    {
        public string Data { get; set; }
    }

    class Child : Parent
    {
        public string OtherDate { get; set; }
    }
}
4

1 回答 1

0

p是 的一个实例Parent,因此您不能告诉运行时将其解释为一个。

编译器没有捕捉到它,因为这样的代码

 Parent p = new Child();
 Child c = (Child)p;

并且编译器不会进行捕获它所需的静态代码分析。不检查的原因是:

  • 这很耗时

  • 它只能捕获错误的一些实例。

于 2013-10-30T23:44:02.887 回答