我有以下設置:強行關閉的亞型多態性對象實例化
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");
}
}
當我運行類似下面的代碼,團結力關閉。我知道C#支持子類型多態,所以我不確定爲什麼這不起作用。它沒什麼特別或先進的;所以我非常困惑。無恥的承認,我在Java陣營,我(不)有意識地嘗試將我的Java範式適合C#範式。我沒有正確使用它,或者我不理解C#中的子類型是如何工作的?
當然,我明白,這'邵仁枚()'是類的構造函數。但是,當我嘗試這樣做時,與此部隊相同的我的實現會關閉Unity3d環境。 – lilott8
您的構造函數RunMe的返回值爲「void」。我之前沒有看過這個語法,你的構造函數實際上是返回一個對象引用,所以它不應該是無效的。您是否收到任何其他錯誤?你的程序是否編譯? – njack
哈哈,我無意中添加了空白。顯然,我沒有對此進行校對。它已經改變了。 – lilott8