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]);
}
}
}