De situatie is als volgt:
Ik heb een abstract class Ship. Hiervan bestaan een aantal subclasses; Carrier, Battleship, Submarine, Cruiser en Destroyer. Van deze subclasses worden een aantal instanties gemaakt die in een collectie worden gestopt. Vervolgens wil ik deze collectie uitlezen, op zo'n manier dat een Carrier gewoon een Carrier blijft, en een Battleship gewoon een Battleship.
Heel ingekort heb ik dus zoiets:
Het schip in mijn foreach loop is op deze manier altijd van het type Schip. Dit is echter niet de bedoeling. Ik wil gewoon een Carrier, Battleship, etc.
Nu snap ik dat ik hem cast naar een Ship in de foreach loop, maar ik weet geen manier om dit niet te doen. Ook als ik er var of object van maak wordt het een Ship object. Dan heb je nog dynamic, maar daar kun je volgens mij niet zoveel mee.
Wie o wie helpt mij aan de (zeer waarschijnlijk zeer simpele) oplossing voor dit probleem?
Ik heb een abstract class Ship. Hiervan bestaan een aantal subclasses; Carrier, Battleship, Submarine, Cruiser en Destroyer. Van deze subclasses worden een aantal instanties gemaakt die in een collectie worden gestopt. Vervolgens wil ik deze collectie uitlezen, op zo'n manier dat een Carrier gewoon een Carrier blijft, en een Battleship gewoon een Battleship.
Heel ingekort heb ik dus zoiets:
C#:
1
2
3
4
5
6
| ArrayList Ships = new ArrayList(); foreach (Ship ship in Ships) { // Doe iets met het type schip } |
Het schip in mijn foreach loop is op deze manier altijd van het type Schip. Dit is echter niet de bedoeling. Ik wil gewoon een Carrier, Battleship, etc.
Nu snap ik dat ik hem cast naar een Ship in de foreach loop, maar ik weet geen manier om dit niet te doen. Ook als ik er var of object van maak wordt het een Ship object. Dan heb je nog dynamic, maar daar kun je volgens mij niet zoveel mee.
Wie o wie helpt mij aan de (zeer waarschijnlijk zeer simpele) oplossing voor dit probleem?