Hej igen, jeg synes nu at have en stumnp kode der rent faktisk gør det jeg gerne vil, der er nok plads til forbedring men stærkt inspireret af dine råd. jeg anvender dog en gammeldags struct som bogsamling
public struct bogsamling { public string forfatter; public string titel; public int antal; } //namespace Bog class Bog { bogsamling minbog = new bogsamling(); Dictionary<int, bogsamling> dicbog = new Dictionary<int, bogsamling>();
// Hashtable dicbog = new Hashtable(); public Bog(string Forfat, string titel, int antal)
Jeg forstår ikke helt hvorfor du bekymrer dig om hvorvidt det er dictionary eller hashtable eller hvad der nu end findes fra .Net 1.1? Arbejder du i noget nyere end bare .Net 2, ville jeg helt sikkert arbejde med typesikre samlinger som Arne også nævner.
eks.vis ville jeg dropped det hejs med add to dictionary, det virker lidt oldschool.
og hvorfor er din bogsamling en struct?
Gør hellere sådan her: (husk også korrekt namingconvention)
public class Bogsamling { public string Forfatter; public string Titel; public int Antal; } //namespace Bog class Bog {
List<Bogsamling> bogsamlinger = new List<Bogsamling>(); public Bog(string forfatter, string titel, int antal) { bogsamlinger.Add(new Bogsamling{ forfatter, titel, antal});
}
//drop det testfims
public void udskriv() { foreach (var bogsamling in bogsamling) { Console.WriteLine("{0}, {1}, {2}", bogsamling.titel, bogsamling.antal); }
}
}
Hvis du så stadig vil have muligheden for et dictionary, så skriv lige igen :)
et noget forsinket tilbagemelding, jeg har været på Jelling festival og haft en travl uge, men jeg ønsker faktisk at fortsætte med dictionary, men har dog droppet min struct og lavet en public class i stedet for. Jeg har dog et problem endnu Jeg vil gerne lave en procedure der kan chekke på det enkelte felt i et dictionary dvs. her looper jeg igennem mit dictionary, det er sådan set fint nok public void udskriv_boger() { foreach (KeyValuePair<int, bog> pair in dicbog) { Console.WriteLine("{0}, {1}, {2}, {3}", pair.Key, pair.Value.titel, pair.Value.antal, pair.Value.forfatter + "\n"); }
} Men hvad nu hvis jeg bare gerne ville læse på en bog ad gangen og bog_id er key i mit dictionary ( DVS jeg vil bare læse titel på bog_id x
en parametre som er ditionary key og jeg gerne ville nøjes med at læse forfatter feltet og returnere true hvis eksistere og false hvis ikke eksistere Jeg kan godt det der med containsKey(bog_id) men jeg kan ikke finde ud af at tilgå/læse de enkelte Variable som titel og forfatter uden at lave det loop. Det er nok rent syntaks mæssigt jeg er lidt i baglås her
Hej Arne det virkede perfekt. Egenligt burde jeg vel lukke spg. og oprette et nyt,men jeg tillader mig lige at stille et lille tillægs spg. Jeg forstår ikke helt dealen med den her fejl besked "not all code paths returns a value" jeg har denne lille funktion der såmænd bare skal returnere en int hvis den altså eksistere
int find_kunde(string søgetekst) { foreach (KeyValuePair<int, kunde> pair in dicKunde) { if (dicKunde[pair.Key].fornavn == søgetekst) return pair.Key;
}
}
hvordan skal det håndteres ( jeg kan jo bare sætte nogle returns ind og prøve mig frem men jeg synes bare ikke det giver mening )
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.