「A」というクラスがあり、それから派生した2つのクラスがある場合、「B」と「C」と言うことができます。どちらがどちらかわからない、BとCの両方の新しいインスタンスを作成するにはどうすればよいですか。これはおそらく紛らわしいように聞こえるので、私のものと同様のコードを明確にして使用させてください。
基本クラス:
class A {
stuff...
}
派生クラス:
class B : A{
stuff...
}
class C : A {
stuff...
}
それから私が持っている他のクラスで:
class Z {
void Derp() {
foreach(A classA in listOfA's) {
create new instance of derived class
}
}
}
私は単純に言うことはできませんB = new B()
。C = new C()
おそらくBがリストにまったく含まれていないか、リストに3つのBと1つのAがあるためです。確かにそれを行う方法はいくつかありますが、そうでない場合は、次のようなswitch-caseステートメントを使用できます。
class Z {
void Derp() {
foreach(A classA in listOfA's) {
switch(classA) {
case is B:
B = new B();
break;
case is C:
C = new C();
break;
}
}
}
}
}
クラスAから派生する新しいクラスを作成するたびに、そこに別のcaseステートメントを追加することを忘れないようにする必要があるため、必要な場合を除いて、この方法は避けたいと思います。
では、これをどのように行う必要がありますか?
ありがとう。