Dictionary, C#’da bir anahtar-değer çifti koleksiyonudur. Anahtarlar ve değerler herhangi bir veri türünde olabilir. Dictionary, anahtarlara göre hızlı bir şekilde erişim sağlar.

Dictionary oluşturmak için Dictionary<TKey, TValue> sınıfını kullanırız. TKey, anahtarların veri türüdür ve TValue, değerlerin veri türüdür.

Dictionary’e öğe eklemek için Add() metodunu kullanırız. Add() metodu, anahtar ve değer olarak iki parametre alır.

Dictionary’ten öğe almak için anahtarı kullanırız. Anahtara göre öğeyi almak için ElementAt() metodunu veya TryGetValue() metodunu kullanırız. ElementAt() metodu, anahtara karşılık gelen öğeyi döndürür. TryGetValue() metodu, anahtara karşılık gelen öğeyi döndürür ve anahtar yoksa null döndürür.

Dictionary’ten öğe kaldırmak için Remove() metodunu kullanırız. Remove() metodu, anahtar olarak belirtilen öğeyi kaldırır.

Dictionary’in bazı önemli özellikleri şunlardır:

  • Anahtarlar ve değerler herhangi bir veri türünde olabilir.
  • Anahtarlar benzersiz olmalıdır.
  • Dictionary, anahtarlara göre hızlı bir şekilde erişim sağlar.
  • Dictionary, öğeleri rastgele bir düzende saklar.
  • Dictionary, öğe ekleme, öğe alma, öğe silme ve öğe arama gibi birçok yönteme sahiptir.

Dictionary Örneği

Aşağıdaki örnekte, bir Dictionary oluşturuyoruz ve iki öğe ekliyoruz. Ardından, öğeleri ekrana yazdırıyoruz.

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        dictionary.Add("key1", "value1");
        dictionary.Add("key2", "value2");

        foreach (var item in dictionary)
        {
            Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
        }
    }
}

Bu kod, aşağıdaki çıktıyı üretecektir:

Key: key1, Value: value1
Key: key2, Value: value2

Bir Değerin Anahtarını Bulmak

1.İndeksleme özelliği kullanarak:

Aşağıdaki örneklerde, bir Dictionary’te bulunan bir değerin anahtarını buluyoruz.

using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        Dictionary<string, string> dictionary = new Dictionary<string, string>();
        dictionary.Add("key1", "value1");
        dictionary.Add("key2", "value2");

        string searchValue = "value1";
        int key;

        // TryGetValue metoduyla anahtarı bulmaya çalışıyoruz.
        if (dictionary.ContainsValue(searchValue))
        {
            key = dictionary.FirstOrDefault(x => x.Value == searchValue).Key;
            Console.WriteLine("Aranan değer \"{0}\" için anahtar: {1}", searchValue, key);
        }
        else
        {
            Console.WriteLine("Aranan değer bulunamadı.");
        }
    }
}

2. TryGetValue yöntemi kullanarak:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Dictionary<int, string> dictionary = new Dictionary<int, string>();
        dictionary.Add(1, "value1");
        dictionary.Add(2, "value2");

        string searchValue = "value1";
        int key = -1; // Varsayılan değer, eğer değer bulunamazsa -1 olarak kalacak.

        foreach (KeyValuePair<int, string> pair in dictionary)
        {
            if (pair.Value == searchValue)
            {
                key = pair.Key;
                break; // Değeri bulduğumuzda döngüden çıkıyoruz.
            }
        }

        if (key != -1)
        {
            Console.WriteLine("Aranan değer \"{0}\" için anahtar: {1}", searchValue, key);
        }
        else
        {
            Console.WriteLine("Aranan değer bulunamadı.");
        }
    }
}

Bu kod, aşağıdaki çıktıyı üretecektir:

Aranan değer “value1” için anahtar: key1