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
Post a Comment