如何将基类强制转换为派生类

时间:2013-10-30 23:39:37

标签: c#

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

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; }
    }
}

1 个答案:

答案 0 :(得分:0)

pParent的一个实例,因此您无法告诉运行时将其解释为一个。

编译器没有捕获它,因为像这样的代码

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

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

  • 耗费时间

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