Avatar billede Skynet Mester
15. april 2008 - 09:55 Der er 32 kommentarer og
1 løsning

Iist<t> i en klasse()

Hej, jeg har denne klasse, og jeg vil gerne have at string Reserveringer, bliver til en List<Reserveringer> i stedet, men hvordan gør jeg det i en klasse?

class Flaske : SuperResurser 
    {

   
    protected int FlaskeID;


            public Flaske(string Reserveringer, string Tilstand, int FlaskeID, int ServiceDato) :
        base(Reserveringer, Tilstand)
            {
                this.FlaskeID = FlaskeID;
       
            }

            public int PropertyFlaskeID
            {
                get { return FlaskeID; }
                set { FlaskeID = value; }
            }
         
   
   
    }
Avatar billede kalp Novice
15. april 2008 - 10:28 #1
class Flaske : SuperResurser 
    {

   
    protected int FlaskeID;
    private List<string> reserveringer = new List<string>();
            public Flaske(string Reservering, string Tilstand, int FlaskeID, int ServiceDato) :
        base(Reserveringer, Tilstand)
            {
                this.FlaskeID = FlaskeID;
                reserveringer.Add(Reservering);
            }

            public int PropertyFlaskeID
            {
                get { return FlaskeID; }
                set { FlaskeID = value; }
            }
         

og så lav en property til at hente reservinger.. eller elementer i den.
Avatar billede kalp Novice
15. april 2008 - 10:28 #2
og tilføje i den.
Avatar billede Skynet Mester
15. april 2008 - 11:30 #3
Ok, tak, kan du give et eksempel på hvordan jeg kan lave properties i denne klasse, hvis  jeg fx. fjerner "Reserveringer" fra  base(Reserveringer, Tilstand).

hvordan skal get og set laves?, og kan man evt.lave en  property til hvis man skal søge efter den første reservering i listen reserveringer i klassen flasker?
Avatar billede kalp Novice
15. april 2008 - 17:42 #4
public string getReservation(int index){
return reserveringer[i];
}

public string addReservartion(string reservation){
reserveringer.Add(reservation);
}

og hvis du skal søge skal du lave en metode og ikke en property.
Avatar billede kalp Novice
15. april 2008 - 17:42 #5
getReservation kan sikkert overrides til at modtage en string også.
Avatar billede Skynet Mester
16. april 2008 - 14:28 #6
ok, mange tak..

Det virker, hvis jeg ændrer [i] til index

public string getReservation(int index){
return reserveringer[i];
Avatar billede Skynet Mester
21. april 2008 - 18:19 #7
Hey

Jeg har prøvet at lave min list om til en Dictonary, men har lidt problemer med at få det kodet om, kan de se hvad der er galt?

protected DateTime dato;
        protected string Reservering;
        protected string Tilstand;

       
        public Dictionary<DateTime, string> reserveringsliste = new Dictionary<DateTime, string>();


        public SuperResurser(string Reservering, DateTime dato, string Tilstand)
        {
            reserveringsliste.Add(dato, Reservering);
            this.Tilstand = Tilstand;
            this.dato = dato;
        }

 
          public string addReservartion(DateTime dato, string Reservering)
            {
                reserveringsliste.Add(dato,Reservering);
                return (Reservering);
            }

          public string getReservation(DateTime dato)
          {
              return reserveringsliste[dato];
          }


          public virtual DateTime PropertyDato
          {
              get { return dato ; }
              set { dato = value; }
          }
       
        public virtual string PropertyTilstand
        {
            get { return Tilstand; }
            set { Tilstand = value; }
        }
Avatar billede kalp Novice
21. april 2008 - 20:01 #8
hvad er problemet?

din addReservation er lidt komisk eftersom den returnere Reservering parameteren, som bliver sendt ind med metoden.

Hvis det er getReservation der ikke virker, så skal du huske på, at den DateTime du sender ind skal være identisk med det der findes i din dictionary.

dvs. dato, timer, min, sekunder, milli-sekunder osv. skal passe.
Avatar billede Skynet Mester
21. april 2008 - 20:05 #9
ja det er addReservation, VS fortæller at den er tilføjet i forvejen, så måske jg bliver nødt til at slette addReservartion, idet den er i metoden reserveringsliste.Add(dato, Reservering);
Avatar billede Skynet Mester
21. april 2008 - 20:08 #10
men så kan jeg ikke bruge det :), jeg skal nemlig kunne tilføje flere reservationer efter objektet er lavet
Avatar billede kalp Novice
21. april 2008 - 20:10 #11
nåhh.. ja men du kan ikke tilføje to ens date times i en dictionary..
det er netop din nøgle og derfor er den unik.
Avatar billede Skynet Mester
21. april 2008 - 20:17 #12
jep, probelmet er bare at hvis jeg skirver nedestående, så vil VS have to parametere, så er det umuligt at flette den ind i min klasse? så hvordan skal det skrives, så jeg undgår problematikken?

public string addReservartion(string Reservering)
            {
                reserveringsliste.Add(Reservering);
                return (Reservering);
            }
Avatar billede kalp Novice
21. april 2008 - 20:20 #13
Hvorfor laver du ikke bare en List<T> som tidligere og hvis du vil have en Dato med så opretter du da en C# klasse, som du kalder for "Reservering". Den kan laves meget simpelt som:

public class Reservering{
public DateTime date;
public string reservering;
}

og din list modtager så sådan en type kun.

List<Reservering>
Avatar billede Skynet Mester
21. april 2008 - 20:29 #14
men kan jeg så godt fx.flytte en reservering til en anden dato i listen, som med en dictonary fx.  fruit[new DateTime(2008, 04, 21)] = "Plaum";

eller kan man få værdien af en key, som i mit tilfælde er datoen?
Avatar billede kalp Novice
21. april 2008 - 20:33 #15
hvorfor flytte når du bare kan opdatere dato'en i klassen?

og når du skal have noget ud af listen igen.. f.eks ud fra dato'en, så laver man selv en metode, som kan gøre dette.
Dvs. en som modtager en dato og løber listen igennem indtil den finder en match.
Avatar billede Skynet Mester
21. april 2008 - 20:41 #16
ok, det prøver jeg.. tak for vejledningen :)
Avatar billede kalp Novice
21. april 2008 - 20:45 #17
ingen årsag:)
Avatar billede Skynet Mester
21. april 2008 - 21:07 #18
Her du et tric til hvordan jeg fortæller at string Reserveringsnavn, DateTime dato skal være Reservering i metoden? har prøvet med Reservering = Reserveringsnavn, dato; :)


protected DateTime dato;
        protected Reservering Reservering;
        protected string Reserveringsnavn ;
        protected string Tilstand;

        public List<Reservering> reserveringsliste = new List<Reservering>();

        public SuperResurser(string Reserveringsnavn, DateTime dato, string Tilstand)
        {
            Reservering = Reserveringsnavn, dato;
            reserveringsliste.Add(Reservering);
            this.Tilstand = Tilstand;
            this.dato = dato;
        }
Avatar billede Skynet Mester
21. april 2008 - 21:08 #19
Reseveringsklassen:

public class Reservering               
    {
        protected string Aktivitet;
        protected DateTime  Dato;


        public Reservering(string Aktivitet, DateTime Dato)
        {
            this.Aktivitet = Aktivitet ;
           
            this.Dato = Dato;
        }
        public virtual string PropertyAktivitet
        {
            get { return Aktivitet ; }
            set { Aktivitet  = value; }
        }
     
        public virtual DateTime PropertyDato
        {
            get { return Dato; }
            set { Dato = value; }
        }
Avatar billede Skynet Mester
21. april 2008 - 21:28 #20
jeg har set lyset nu :)
public SuperResurser(string Reserveringsnavn, DateTime dato, string Tilstand)

skal lavs om til
public SuperResurser(Resevering Reserveringsnavn, string Tilstand)

og når jeg laver objekt ((navn,new DateTime dato),"ok"))
Avatar billede kalp Novice
21. april 2008 - 22:15 #21
yepper.. jeg var ikke lige til stede:)
Avatar billede Skynet Mester
21. april 2008 - 23:08 #22
synes det driller lidt når jeg laver en ny instans
            SuperResurser sr = new SuperResurser(("reseveret"(new DateTime(2008, 05, 21))), "ok");

jeg får afvide Error 3 Method name expected
Avatar billede kalp Novice
21. april 2008 - 23:19 #23
Reservering res = new Reservering("reserveret",new DateTime(2008, 05, 21));         
SuperResurser sr = new SuperResurser(res , "ok");
Avatar billede Skynet Mester
22. april 2008 - 14:52 #24
ok, tak. brude nedestående metode ikke stadigvæk virke, selv om at det nu er en anden klasse? 

  public Reservering getReservation(int index)
          {
              return reserveringsliste[index];
          }
Avatar billede kalp Novice
22. april 2008 - 15:47 #25
ja det bør den.
Avatar billede Skynet Mester
22. april 2008 - 16:00 #26
jeg får kun .Reservering retur når jeg giver den 1 som index, måske er det fordi at jeg mangler at angive om den skal returnere navnet eller datoen i klassen Reservering?
Avatar billede kalp Novice
22. april 2008 - 16:17 #27
Du får hele objektet Reservering tilbage..
hvis du vil udskrive en værdi direkte så skal du lave en ToString metode i Reservering.

public string override ToString(){
  return Aktivitet;
}

mener jeg.
Avatar billede Skynet Mester
22. april 2008 - 17:14 #28
yes, det virker..

Jeg skal til at lave en metode som udskriver hele listen, men når jeg er inde i min klasse (superresurser),kan jeg ikke i VS se de samme muligheder for at bruge ToArray, eller FindAll, men når jeg programmerer min windowsform er de tilrådighed, er det derfor at jeg selv skal programmere disse metoder i min klasse superresurser? eller skal de programmeres i klassen resurser som med ToString()
Avatar billede kalp Novice
22. april 2008 - 21:16 #29
Din klasse Reservering repræsentere ét objekt..
Derfor giver det ikke mening at du har en ToArray i den
Avatar billede Skynet Mester
22. april 2008 - 21:49 #30
ok, så laver jeg en metode i superresurser hvor min liste er. Kan jeg bruge ToArray her?, når jeg prøver fortæller VS at jeg skal have en get og set

public string getALL

            {

              return reserveringsliste.ToArray();
           
             
            }
Avatar billede kalp Novice
22. april 2008 - 22:12 #31
tråden er begyndt at blive lidt forvirrende:)

men det du har nu er en List<Reservering> i en klasse kaldet SuperResurser ?
og du vil gerne kunne kalde en metode i SuperResurser som returnere dig en String array over aktiviteter?
Avatar billede Skynet Mester
23. april 2008 - 09:30 #32
jep, jeg har prøvet

public Reservering[] GetAll()
        {
            return reserveringsliste.ToArray();

        }
men den returnerer igen Reservering[]Array og ikke mine navne og datore som jeg har lavet i Tostring override

Jeg skal nok lade det være det sidste i denne tråd :), og så oprette nye indlæg :o)
Avatar billede Skynet Mester
24. april 2008 - 14:40 #33
har fundet fejlen, det var bare et spørgsmål om rigtig syntaks

listBox2.Items.AddRange(f1.GetAllinReserveringsliste());
-------------------------------------------------------
public Reservering[] GetAllinReserveringsliste()
            {
                return reserveringsliste.ToArray();

            }
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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