ساخت دیکشنری

مي توان يک کلاس ايجاد کرد که از کلاس DictionaryBase مشتق شود. با اين روش شما مي توانيد به هر عنصر با استفاده از يک کليد (key) (که معمولا از نوع رشته است) دسترسي يابيد. اين کليدها داراي يک مقدار (value) وابسته به خود هستند. براي فراخواني هر يک از آيتم هاي ديکشنري از کليد آن استفاده مي کنيم نه از انديس آن.
به کد زير توجه کنيد :

using System.Collections;

public class Animal
{
    public string Name { get; set; }
    public int Age { get; set; }
    public double Height { get; set; }

    public Animal(string name, int age, double height)
    {
        Name = name;
        Age = age;
        Height = height;
    }
}

public class Animals : DictionaryBase
{
    public void Add(string key, Animal newAnimal)
    {
        Dictionary.Add(key, newAnimal);
    }

    public void Remove(string key)
    {
        Dictionary.Remove(key);
    }

    public Animal this[string key]
    {
        get { return (Animal)Dictionary[key]; }
        set { Dictionary[key] = value; }
    }
}

يک کلاس به نام Animal تعريف کرده ايم که قرار است در کلاس ديکشنري مورد استفاده قرار بگيرد(خطوط 15-3). سپس يک کلاس به نام Animals ايجاد مي کنيم (نام يکي از کلاس ها Animal و ديگري Animals است)که از کلاس DictionaryBase ارث بري مي کند. حال مي توان متدهايي براي حذف و اضافه ورودي هاي ديکشنري تعريف کرد. متد ()Add به يک کليد از نوع رشته و يک شي Animal که مي خواهيم به ديکشنري اضافه کنيم احتياج دارد. از خاصيت Dictionary کلاس DictionaryBase براي اضافه کردن يک ورودي به ديکشنري استفاده مي کنيم.  متد ()Remove فقط به کليد شي ايي که مي خواهيم حذف کنيم نياز دارد. در اين متد هم از خاصيت Dictionary براي حذف آيتم ها استفاده مي کنيم. ما يک ايندکسر تعريف کرده ايم که به جاي يک مقدار int ، يک کليد از نوع رشته قبول مي کند. اجازه بدهيد براي نشان دان توانايي هاي کلاس ديکشنري مان يک کلاس ايجاد کنيم.

using System;

public class Program
{
    public static void Main()
    {
        Animals animalDictionary = new Animals();

        animalDictionary.Add("Animal1", new Animal("John", 10, 100));
        animalDictionary.Add("Animal2", new Animal("Sussy", 5, 10));
        animalDictionary.Add("Animal3", new Animal("Frank", 3, 5));
        animalDictionary.Add("Animal4", new Animal("Mark", 7, 15));

        Console.WriteLine("Accessing entries by their keys");

        for (int i = 0; i < animalDictionary.Count; i++)
        {
            Console.WriteLine(animalDictionary["Animal" + (i + 1)].Name);
        }

        animalDictionary.Remove("Animal3");
        Console.WriteLine("nFrank was removed from the dictionary.");

        Console.WriteLine("nIterating using foreach loop.");
        foreach (DictionaryEntry animal in animalDictionary)
        {
            Console.WriteLine((animal.Value as Animal).Name);
        }
    }
}
Accessing entries by their keys
John
Sussy
Frank
Mark

Frank was removed from the dictionary.

Iterating using foreach loop.
John
Mark
Sussy

يک نمونه جديد از کلاس ديکشنري Animals ايجاد مي کنيم. سپس چند نمونه از کلاس Animal و کليدهاي مربوط به آنها را به آن اضافه مي کنيم. همانطور که در مثال بالا مشاهده مي کنيد مي توانيم با استفاده از حلقه for به هر يک از ورودي با استفاده از کليدشان که حکم انديس دارد دست يابيم. سپس با استفاده از متد ()Remove سومين ورودي ديکشنري را با استفاده از کليدش حذف کرده ايم. و بعد مقادير را با استفاده از يک حلقه foreach مي خوانيم و چاپ مي کنيم. شما بايد به يک تفاوت توجه کنيد. ما از DictionaryEntry به عنوان نوع استفاده کرده ايم چون هر آيتم در کلاس dictionary يک نوع دارد. شي واقعي در داخل خاصيت  DictionaryEntry  ، Value  قرار دارد. اين مقدار را با استفاده از عمل cast به نوع مناسب تبديل مي کنيم.