C# dilinin değişik özelliklerinden biri Indexer özelliği. Bu özellik ile istediğin her class bir diziymiş gibi kullanabiliyoruz. Bir class'ın içindeki bir diziye veya collection'a [] operatorunu kullanarak erişilebiliyor.
Örneğin Sinif class'ımız olsun. Bu class öğrencilerin numaralarını bir dizi şeklinde tutabilir. Biz bir sınıfın öğrencilerinin numaralarına aşağıdaki gibi erişebiliriz.
Sinif sinif=new Sinif();
int ilkNo=sinif[0];
sinif[3]=123;
yukarıdaki kodda sinif[0] ile o sinifaki ilk numaraya erişmiş oluyoruz. Daha sonra 3. öğrencinin numarasını 123 yapıyoruz.
Sinif class'ını bu şekilde kullanabilmek için Sinif class'ına aşağıdaki gibi bir property eklenmelidir.
public int this[int i]{
get{
// bir eleman döndürülmeli
}
set{
// verilen değer set edilmeli
}
}
yukarıdaki gibi bir property Sinif class'ına eklendiğinde artık [] operatörünü kullanabiliriz.
aşağıda Sinif class'ı görülmektedir. Sinif class'ına bir main ekleyerek bir test yapılmaktadır.
Indexer özelliği ilginç bir özellik olmasına rağmen fazla kullanılması gerekmiyor . Belki tek yararı kullanımı daha kolaylaştırıyor olması. İndexer yapmak yerine Sinif class'ına verNumara(int index) şeklinde bir method ekleyebilirdik. Set etmek içinse tabi setNumara(int index,int number) şeklinde bir method eklememiz gerekir. Bu kullanımı biraz daha zorlaştırıyor o kadar. Yine de karar programcıya ait.