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あるため、ランタイムにそれを 1 つとして解釈するように指示することはできません。

このようなコードのため、コンパイラはそれをキャッチしません

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

コンパイラは、それをキャッチするために必要な静的コード分析を行いません。チェックしない理由は次のとおりです。

  • 時間がかかる

  • エラーのインスタンスの一部のみをキャッチできます。

于 2013-10-30T23:44:02.887 に答える