Avatar billede micker Praktikant
03. december 2012 - 22:07 Der er 11 kommentarer

ArrayList med forskellige objekter

Hejsa

Sidder med en opgavem hvor jeg har dannet en ArrayList med forskellige objekter.

Det er gået fint.

Men nu skal jeg loope den igennem for at finde en bestemt. Hvordan gør jeg det?

Normalt ville jeg lave en løkke, hvor jeg angiver klassen(Bruger) objekterne er dannet ud fra:

foreach (Bruger b in al)
        {
          if (b.BrugerNavn == BrugerNavn)
            {
                svar = b.BrugerType;
            }
        }

Men problemet er, at jeg ikke ved hvilket objekt jeg har fat i. kan jeg gøre det på en anden måde? Jeg ville jo gerne have fat i alle de informationer der ligger ud over Bruger klassen.

Alle de involverede klasser har BrugerNavn. Så jeg kan godt spørge på den.

Pft.

Michael
Avatar billede arne_v Ekspert
04. december 2012 - 01:59 #1
Medmindre du haenger fast i .NET 1.x boer du nok bruge List<> fremfor ArrayList.
Avatar billede arne_v Ekspert
04. december 2012 - 02:00 #2
Du skal nok bruge:

foreach(InterfaceEllerSuperKlasseSomAlleArverFra o in al)
{
    // her kan du bruge alle metoder i InterfaceEllerSuperKlasseSomAlleArverFra
}
Avatar billede arne_v Ekspert
04. december 2012 - 02:01 #3
Hvis der ikke er et faelles interface eller basis klasse saa lav om paa strukturen saa du faar en!
Avatar billede micker Praktikant
04. december 2012 - 06:54 #4
Hej

Jeg har en basis klasse, som alle de andre klasser arver fra. Men sub klasserne har også selv felter på sig, og dem kan jeg vel ikke referere til på basisklassen?
Avatar billede platik Nybegynder
04. december 2012 - 09:44 #5
Nej, men du kan spørge om det er en bestemt sub klasse og caste den.

Antager: SuperBruger : Bruger

Bruger b = new SuperBruger();

if (b is SuperBruger) //True
{
    SuperBruger sb = b as SuperBruger;
    //Do somthing
}
Avatar billede HPCISCO Nybegynder
04. december 2012 - 10:11 #6
Det minder ret meget om dette indlæg, og jeg er tilfreds med løsningen:

List<UserControl> og tilgang til properties
Avatar billede Syska Mester
04. december 2012 - 11:17 #7
#HPCISCO
Hvad for et indlæg?

#micker
var filteredList = new List<Bruger>().OfType<SuperBruger>();
Avatar billede arne_v Ekspert
04. december 2012 - 14:44 #8
Man kan teste paa om et objekt er af en betsemt sub klasse via is eller as, men det er normalt et tegn paa at der er noget galt i designet.
Avatar billede dork Nybegynder
12. december 2012 - 15:10 #9
Er ikke 100% sikker på det virker, men prøv da.


IEnumerable<[Din type af Object]> query2 = dinList.OfType<[Din type af Object]>()

Derefter skulle du kunne lave en foreach på query2 og finde dit object..

Håber det hjælper.

Men ellers er der som nævnt en mulighed for at lave en super klasse.
Avatar billede HPCISCO Nybegynder
11. februar 2013 - 09:57 #10
Avatar billede Syska Mester
11. februar 2013 - 10:05 #11
#dork
Er det ikke 97% det samme som jeg skrev :-)

#HPCISCO
What?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester