C# Snippet Tutorial - Dictionary Collections [Beginner]


So, we have all used arrays, and even sometimes a nice HashTable to get things sorted and organized. There are so many uses for an array, and even more for a nice HashTable. But, have you ever noticed that a HashTable is all objects? The Key in each Key/Value Pair is an Object, along with the value itself. But what happens if you don't need something so generic as an object? Well, you can get really specific and really crazy with a collection called Dictionary.

A dictionary is actually just another collection of Key/Value pairs, just like a HashTable, except that you declare a type for the Key and Value. These are any type you want. The Key or Value can be a primitive, array, enum, or even a struture. This can open the door for some pretty crazy code. An example of a useful and simple Dictionary would be something like:
Dictionary<int, string> newDict = new Dictionary<int,string>();
 
This is just a collection of Integer Keys and String Values, so you could add to this Dictionary with loop, like so:
for (int i = 0; i < 10; i++)
{
  newDict.Add(i, "String #" + i.ToString());
}
 
Just like a List or HashTable, you use the Add() method to add to a Dictionary, except that you have to provide a valid int and string for the arguments, or whatever types you set the Dictionary to be. Now say we want to get "String #3" from the collection, we simply go with:
Console.WriteLine(newDict[3]);

//Outputs String #3
 
So far we have done nothing that you can do with a List or HashTable, but what about a Dictionary that has a Color as a key and a string that holds a String representation of that color? Well, the code will look like this:
Dictionary<Color, string> colorStrings = new Dictionary<Color, string>();

colorStrings.Add(Color.Black, Color.Black.ToString());
colorStrings.Add(Color.Blue, Color.Blue.ToString());
colorStrings.Add(Color.Red, Color.Red.ToString());

foreach (KeyValuePair<Color, string> color in colorStrings)
{
  Console.WriteLine(color.Key.GetBrightness().ToString());
}

//Outputs: 0 0.5 0.5
 
The same result could have been achieved with an array of Color objects, but this example does show you the dictionary's strong point. When you get the key or value, you are given an actual Object of a specific type. With a HashTable, the Key and Value are just Objects, meaning they have no type and must be converted to something in order to be more than just that. With a dictionary, you can declare the Object types and get back useful Objects or those types, in this case a Color object or a string.

Dictionaries add a little more detailed aspect to the Collections of C#, allowing a specific type of key/value collection. When you know what you want, they are the way to go. And this just about wraps this this tutorial up.

Comments