foreach med SubKlasser i ArrayList

Tags:    c#

Hej Udviklere.

Jeg har et lille problem med C#, som jeg ikke lige har kunne finde nogen løsning på indtil videre.
Jeg har en ArrayList som indeholder en masse objekter af en bestemt klasse. Disse objekter er så delt ind i subklasser.
Jeg ville gerne kunne lave noget i denne stil:

foreach (Klasse.SubKlasse x in ArrayList)
// gør et eller andet

Men når jeg gør det så får jeg en fejlmeddelelse fordi objekterne som tilhører andre subklasser ikke kan konverteres. Er der en smart løsning? Tænkte om det var muligt at lave noget i retning af:

foreach (Klasse x in ArrayList)
if (x hører til SubKlasse)
// gør et eller andet

Kender bare ikke lige nogen funktion der kan løse det.



Indlæg senest redigeret d. 02.08.2008 16:02 af Bruger #5992
8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Fold kodeboks ind/udCSharp kode 


Der er vidst ingen nemme løsninger!!!!



Indlæg senest redigeret d. 02.08.2008 16:34 af Bruger #13106
Hvordan har du lavet din subklasse? Er der bare arvet fra hoved klassen?



Indlæg senest redigeret d. 02.08.2008 15:17 af Bruger #6559
Hvordan har du lavet din subklasse? Er der bare arvet fra hoved klassen?


Jep. Det er lavet som:

Class Klasse
{
Class SubKlasse1 : Klasse
{
}
Class SubKlasse2 : Klasse
{
}
}


ArrayList'en indeholder således både SubKlasse1'er og SubKlasse2'er, og mit problem er, at jeg ikke kan finde ud af at få foreach til at skelne mellem de to. Den prøver at konvertere dem.



Fold kodeboks ind/udCSharp kode 


Der er vidst ingen nemme løsninger!!!!


Det ser da ganske fint ud i mine øjne. Lige den løsning jeg ledte efter. Nøgleordet "is" er åbenbart lige gået min næse forbi. Jeg takker mange gange.

Sigurd



Fold kodeboks ind/udCSharp kode 


Der er vidst ingen nemme løsninger!!!!


Det ser da ganske fint ud i mine øjne. Lige den løsning jeg ledte efter. Nøgleordet "is" er åbenbart lige gået min næse forbi. Jeg takker mange gange.

Sigurd


Hvis det var mig ville jeg lave et polymorph sådan her:

Fold kodeboks ind/udKode 


så kan du kalde en subklasses funktion direkte.



Indlæg senest redigeret d. 04.08.2008 13:37 af Bruger #404
Ja den mulighed overvejede jeg også. Men i det givne tilfælde virker den anden metode faktisk lidt bedre.
Men tak for alle inputs.

Sigurd



Ja den mulighed overvejede jeg også. Men i det givne tilfælde virker den anden metode faktisk lidt bedre.
Men tak for alle inputs.

Sigurd


Må jeg spørge hvorfor det andet virker bedere?



Ja den mulighed overvejede jeg også. Men i det givne tilfælde virker den anden metode faktisk lidt bedre.
Men tak for alle inputs.

Sigurd


Må jeg spørge hvorfor det andet virker bedere?


Den virker bare mere simpel i det her tilfælde. Jeg skal bare have listet alle objekter i en ArrayList som tilhører en bestemt SubKlasse. Dette skal gøres i en ComboBox på en bestemt form. Klasserne er defineret i en anden fil så hvis jeg skal ind og lave funktionen der, så skal jeg til at lege en masse med adgangen til formen osv...



t