TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C# Copy Dictionary

This C# program copies all the elements in a Dictionary into another.

Copy dictionary. A 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. When the original Dictionary is modified, the copy is not affected.

Constructor

Example. The simplest way of copying your Dictionary, using a custom loop over the keys, is prone to code duplication and errors. It doesn't make any sense to write the loop yourself. The code is present in the Dictionary class itself.

Here: We use the copy constructor. And the example demonstrates how the internal structures are copied.

C# program that copies entire Dictionary

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
	//
	// Create and initialize Dictionary.
	//
	Dictionary<string, int> dictionary = new Dictionary<string, int>();
	dictionary.Add("cat", 1);
	dictionary.Add("dog", 3);
	dictionary.Add("iguana", 5);

	//
	// Copy the Dictionary to a second object.
	//
	Dictionary<string, int> copy = new Dictionary<string, int>(dictionary);

	//
	// Change the first Dictionary. It won't change the copy.
	//
	dictionary.Add("fish", 4);

	//
	// Display the first Dictionary.
	//
	Console.WriteLine("--- Dictionary 1 ---");
	foreach (var pair in dictionary)
	{
	    Console.WriteLine(pair);
	}
	//
	// Display the second Dictionary.
	//
	Console.WriteLine("--- Dictionary 2 ---");
	foreach (var pair in copy)
	{
	    Console.WriteLine(pair);
	}
    }
}

Output
    (Modifying the first Dictionary doesn't affect the copied Dictionary.)

--- Dictionary 1 ---
[cat, 1]
[dog, 3]
[iguana, 5]
[fish, 4]
--- Dictionary 2 ---
[cat, 1]
[dog, 3]
[iguana, 5]

The code defines the Main entry point, and initializes a new Dictionary first. It populates the Dictionary with three key-value pairs. Next, it copies the Dictionary into the second Dictionary "copy".

Finally: It adds a key to the first Dictionary, and displays both Dictionaries. The key added after the copy was made is not in the copy.

Internals. You can manually copy all elements in your Dictionary. Internally, the Dictionary constructor that accepts IDictionary is implemented with this loop. My research established that the foreach loop is fast and eliminates lookups.

Also: You could easily adapt the loop to copy to a Hashtable or List of KeyValuePair structs.

KeyValuePair

Implementation of Dictionary copy constructor: C#

foreach (KeyValuePair<TKey, TValue> pair in dictionary)
{
    this.Add(pair.Key, pair.Value);
}

Summary. We copied an entire Dictionary to a new Dictionary. The Dictionary class does not define a Copy or CopyTo method. For this reason, using the copy constructor is the easiest and clearest way.

Also: We saw the internals of this constructor, which you can adapt to other collections if required.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf