Home
C#
Dictionary Copy Example
This page was last reviewed on Nov 27, 2023.
Dot Net Perls
Copy Dictionary. The C# Dictionary has a copy constructor. When you pass an existing Dictionary to its constructor, it is copied. This is an effective way to copy a Dictionary's data.
Shows a dictionary
When the original Dictionary is modified, the copy is not affected. Once copied, a Dictionary has separate memory locations to the original.
Constructor
Dictionary
First example. We can use a custom loop over the keys, but this is prone to code duplication and errors. It makes no sense to write the loop yourself.
Part 1 We copy the Dictionary into the second Dictionary "copy" by using the copy constructor.
Part 2 The code adds a key to the first Dictionary. And we see that the key added after the copy was made is not in the copy.
Part 3 We print the contents of both collections. The example demonstrates how the internal structures are copied.
Console.WriteLine
Shows a dictionary
using System; using System.Collections.Generic; Dictionary<string, int> dictionary = new Dictionary<string, int>(); dictionary.Add("cat", 1); dictionary.Add("dog", 3); dictionary.Add("iguana", 5); // Part 1: copy the Dictionary to a second object. Dictionary<string, int> copy = new Dictionary<string, int>(dictionary); // Part 2: change the first Dictionary. dictionary.Add("fish", 4); // Part 3: display the 2 Dictionaries. Console.WriteLine("--- Dictionary 1 ---"); foreach (var pair in dictionary) { Console.WriteLine(pair); } Console.WriteLine("--- Dictionary 2 ---"); foreach (var pair in copy) { Console.WriteLine(pair); }
--- Dictionary 1 --- [cat, 1] [dog, 3] [iguana, 5] [fish, 4] --- Dictionary 2 --- [cat, 1] [dog, 3] [iguana, 5]
Internals. The Dictionary constructor that accepts IDictionary is implemented with this loop. My research established that the foreach-loop is fast and eliminates lookups.
foreach
IDictionary
Also We could easily adapt the loop to copy to a Hashtable or List of KeyValuePair structs.
KeyValuePair
foreach (KeyValuePair<TKey, TValue> pair in dictionary) { this.Add(pair.Key, pair.Value); }
A summary. In C# we copied an entire Dictionary to a new Dictionary. As Dictionary does not define a Copy or CopyTo method, the copy constructor is the easiest way.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Nov 27, 2023 (edit).
Home
Changes
© 2007-2024 Sam Allen.