14. juli 2006 - 14:03Der er
13 kommentarer og 2 løsninger
Liste i klasse, get og set metode
Hejsa
Jeg sidder her, og er igang med at kode en lille app til mig selv, og kommer i tanke om en speciel måde at programmere det på... problemet er bare, at jeg ikke kan huske hvordan, og hvad det hedder, så håber der er en venlig sjæl her som kan hjælpe mig igang.
Jeg bruger .NET2.0 C#
Eksempel. Jeg vil gemme tænkte pitstop resultater for en F1 sæson. jeg har tænkt mig 3 klasser. Saeson, Loeb, Pitstop.
Saeson skal gemme en liste over sæsoner. Loeb skal gemme en liste med informationerne om et løb. Pitstop skal gemme informationer om pitstop i liste.
Jeg har engang lært at man i de forskellige klasser kan lave en liste, som man kan returnere og sætte nye eksempler ind
Således at koden ville se nogenlunde sådan her ud. Saeson.Loeb.Pitstop.InformationManSkalBruge;
Jeg har siddet og kodet lidt på eksemplet public class PitStop { private List<PitStop> pitstops;
Det vil dog formentligt være nok med en readonly property ud fra det du siger, set vil jo erstatte arraylisten, og ikke et givent element i den, så med mindre du er interesseret i at manipulere den referance direkte ude fra klassen/objectet selv, så ville jeg mene at
public List<PitStop> Pitstops { get { return this.pitstops; } }
er dækkende nok... da du dermed stadig kan arbejde med Listen ude fra, altså fjerne, sætte ind, ryde osv. men du kan ikke slette eller overskrive referencen til listen...
Den som du har skrevet tænkte jeg også på, men jeg erindrer noget mere indviklet da jeg var på kursus(kan ikke finde mine papirer med kode derfra... øv øv) at jeg lavede en properties på den liste som var lidt mere indviklet.
@Arne: Måske.. jeg syntes bare at kunne huske det var vældigt smart, men en lille smule svære at kode. Har søgt rundt diverse steder på nettet, men ikke rigtigt fundet noget. Har du nogle links?
@hmortensen: Det er ligepræcis det som er meningen, at Pitstopklassen holder styr på alt med pitstops, også listen.
Desuden, med det arne giver sidst, så skal du gøre en af 2 ting...
A... Enten beholde denne get: public List<PitStop> Pitstops { get { return this.pitstops; } }
B... Eller implementere Add, Remove osv. metoder...
Gennerelt bruges index properties jo i forbindelse med collections... ....
Sidst men ikke mindst... Så vil jeg nu give @hmortensen ret i at det ville virke mest logisk hvis det var loeb klassen der havde listen af pitstop elementer....
Sådan at det bliver til:
F1.cs - Overordnet singleton som holder styr på Season'er...
Season.cs - Klasse som beskriver Én season, klassen indeholder 0..* Loeb - Desuden indeholder klassen informationer om seasonen, så som perioden.
Loeb.cs - Klasse som beskriver Ét loeb, klassen indeholder 0..* Pitstop - Desuden indeholder klassen informationer på løbet, så som Sted(bane) og tidspunkt...
Pitstop.cs - Klasse som beskriver et enkelt Pitstop - Inderholder informationer om hvem der var i Pit, hvornår det fandt sted, evt. hvorfor mm.
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.