Kezdőoldal » Számítástechnika » Programozás » C#-ben Dictionaryban hogy...

C#-ben Dictionaryban hogy lehet value-t módosítani, úgy hogy ne módosuljon az összes key-nél, csak egynél?

Figyelt kérdés

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ó.



2016. máj. 11. 13:34
 1/2 anonim ***** válasza:

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.

2016. máj. 11. 13:51
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

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.

2016. máj. 11. 14:19

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!