C#-ben Dictionaryban hogy lehet value-t módosítani, úgy hogy ne módosuljon az összes key-nél, csak egynél?
Tehát röviden: fogni akarom egy elemét a Dictionary-nak, lemásolni, majd módosítani az értékét. Viszont ilyenkor nálam mindig módosul a Dictionary összes value-ja és nem értem miért.
(itt van képen, ha így jobban átlátható: [link]
var NewDictionary = new Dictionary<int, List<Akármik>>();
int key = 0;
key = NewDictionary.Keys.Max() + 1;
NewDictionary.Add(key, NewDictionary[0]); //van bent 0-ás kulccsal már elem és értéke is van
NewDictionary.First(x => x.Key == key).Value.Add(EgyDarabAkármi);
Az utolsó sort próbáltam úgy is, hogy NewDictionary[key].Add(Akármi); de így sem jó.
Tipp (Java-ból kiindulva):
A NewDictionary[0] egy referenciát ad vissza az eltárolt listára, és minden egyes elembe ezt a listát pakolod, így mindegyik key ugyanarra a listára mutat. (Amit egyébként a fenti kódodban SEHOL nem is hoztál létre.)
Új listákat pakolj minden egyes kulcs mellé, és a listák elemeit másold át, és akkor nem lesz gond.
Egyébként pedig így, hogy csak egy indexet tárolsz kulcsként, nincs értelme dictionary-t használni. Egy vector/arraylist ugyanezt teszi jóval átláthatóbban.
Istenkém, tényleg ez a baj, hogy ugyan arra a listára mutat mindenhol... és erre szórtam ki a fél napom :D
Amúgy a Dictionary-t okkal használom, csak próbáltam leegyszerűsíteni a kódot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!