C# Indexer Yapımı

Normal dizilerde indexer özelliği bulunmaktadır. Peki bu özellik ne yapar ,indexers bir nesnenin dizi gibi indekslenmesini sağlamaktadır.

Kendi oluşturduğumuz yapılarda (koleksiyonlar vs. gibi) bulunmaz. Bu özelliği kendimiz ekleriz.

Indexer kod yapısı;

 public T this[int index]
 //T sizin geriye döndürdüğünüz değerin tipidir.
 {
  get
  {
    return this._items[index];
  }
  set
  {
    this._items[index] = value;
  }
 }

Örnek bir dizi:

  //Dizilerde indexer özelliği bulunmaktadır.
  string[] dizi = {"kerem","ali","furkan","okan","emirhan"};
  Console.WriteLine(dizi[3]);
  //burada indexleme özelliğini kullanarak
  //3. indexdeki elemana erişmiş olduk

Şimdi kendi oluştuduğumuz bir yapıya indexer özelliğini ekleyelim

 //Kendi classımızı oluşturalım
 class Uyeler
 {
   string[] isimler;
   //Burada uzunluğu kendimiz belirliyoruz
   public Uyeler(int uzunluk)
   {
     isimler = new string[uzunluk];
   } 
   //indexerımızı oluşturuyoruz
   public string this[int index]
   {
      get
       {//uzunluk kontrolü yapıyoruz
        if (index >= 0 && index< isimler.Length)
         {
            return isimler[index];
         }
            return "Sınırı aştınız :(";
       }
      set
       {
        if (index >= 0 && index < isimler.Length)
         {
            isimler[index] = value;
         }
       }
   }
  class Program
   {
    static void Main(string[] args)
     {
      Uyeler uye = new Uyeler(5);
      //Uyelerimizi ekliyoruz
      uye[0] = "Kerem";
      uye[1] = "Ali";
      uye[2] = "Furkan";
      uye[3] = "Okan";
      uye[4] = "Sinan";
      uye[5] = "Emirhan";
      //Sınırı şimdi geçmiş oluyoruz 
      //Ve belirlediğimiz hata mesajını ekrana yazıcaktır.
      for (int i = 0; i < 6; i++)
      {
         Console.WriteLine(uye[i]);
      }
    }
  }