Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C#
Hi
 
I am using dictionary of type dictinary. and i am reading in loop some data.
first time when i fill dictianry 1 and dictianry 2 all is fine.
next i have to change data in the dictianry and add it to dictianry 1.
for this I am clearing dictianry 2.
 
and when i do this operation the previous data also get changed.
 
As dictianry is of reference type.
 
I need work around for this.
 
Anyone ahve any idea?
Posted 15-Mar-12 4:13am
Comments
BobJanova at 15-Mar-12 9:19am
   
Not clear. You can clear a dictionary (i.e. remove all items) using Dictionary.Clear().
SAKryukov at 15-Mar-12 22:51pm
   
Dictionary of dictionary... do you mean one dictionary type is a key or a value in other dictionary? No, not clear. At least show your type in code.
 
And please explain why.
--SA
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

You need to do a deep copy. Have a look at the following links for more info:
http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx[^]
 
Deep copy of objects in C#[^]
 
Good luck!
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

It's due to the way you're copying the data. You're essentially adding an additional reference to the same object, so when you change it in one dictionary, it also changes in the other.
  Permalink  
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 195
1 ProgramFOX 130
2 Maciej Los 105
3 Sergey Alexandrovich Kryukov 105
4 Afzaal Ahmad Zeeshan 82
0 OriginalGriff 6,564
1 Sergey Alexandrovich Kryukov 6,048
2 DamithSL 5,228
3 Manas Bhardwaj 4,717
4 Maciej Los 4,150


Advertise | Privacy | Mobile
Web02 | 2.8.1411022.1 | Last Updated 15 Mar 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100