2

これに関する C# の投稿を見つけることができませんでした。これを行う方法はありますか..

class parent {
    public parent() { }
}

class child : parent {
    public child() { }
}

class Program {
    static void Main(string[] args) {
        parent p = new parent();
        child c = (child)p;  
    }
}

これを行う理由は、関数の呼び出しによって作成されるオブジェクトにいくつかのメソッドを追加するためです(UIGraphics.GetCurrentContext())

4

5 に答える 5

4

そんなことはできません。

例を考えてみましょう:

class Fruit {
    // bla
}

class Banana : Fruit {
    // bla
}

以下は不可

Fruit f = new Fruit();
Banana b = (Banana)f;

すべての果物がバナナというわけではないので

于 2013-06-13T20:42:51.223 に答える
2

o これはできません。あなたの宣言は、子が親から継承することです。親が子でなければならないということは何もありません。

使用していた場合Parent p = new Child()、キャストは問題ありません。

メソッドを既存のオブジェクトに追加したい場合はExtension methods、変更できないクラスを拡張する目的で作成されたものであるため、調査する必要があると思います。

于 2013-06-13T20:43:05.583 に答える
0

ポリモーフィズムの概念について話し合っています。あなたが要求することは不可能です。その理由は、少し説明すれば明らかです。

クラスは、child必要に応じてクラスの機能を拡張することができparentます...大量の新しいメソッドやプロパティを追加するなど...childは、のスーパーセットですparent。そのため、キャストparentするchildと、カバーされていないスーパーセットの一部が残ります。子の新しいメンバー、メソッド、およびプロパティに対して定義された機能はありません。

于 2013-06-13T20:44:03.810 に答える