0

私は次の設定をしています:

public abstract class Parent {
    // logic for class
    public virtual int Value {get;set;}
    public Parent(){}
}

public class Child1 : Parent {
    // child specific logic here
    public Child1 () : base() {
        base.Value = 4;
    }
}

public class Child2 : Parent {
    // child specific logic here
    public Child2 () : base() {
        base.Value = 6;
    }
}

public class RunMe {
    Parent p;

    public Parent instantiateObject(string s) {
        switch(s) {
            case "child1":
                return new Child1();
            break;
            default:
            case "child2":
                return new Child2();
            break;
        }
    }

    public RunMe() {
        p = instantiateObject("child1");
    }
}

これに似たコードを実行すると、Unity force が終了します。C# がサブタイプ ポリモーフィズムをサポートしていることは知っているので、なぜこれが機能しないのかよくわかりません。特別なことでも高度なことでもありません。だから私はとても混乱しています。恥知らずな告白ですが、私は Java キャンプにいて、(無意識に) 自分の Java パラダイムを C# パラダイムに適合させようとしています。私はそれを正しく使用していませんか、それとも C# でサブタイピングがどのように機能するかを理解していませんか?

4

2 に答える 2

0

あなたのメンバー名「RunMe」は、あなたのクラス「RunMe」と同じです。クラス コンストラクターとして「RunMe」を使用します。

public RunMe() {

サブタイピングに関する限り、実装方法に問題はありません。あなたが説明したように動作するはずです。

于 2015-04-07T05:00:13.273 に答える