Kmaren gw iseng2 ikut test di BrainBench trus ada sesuatu yang menggelitik. Gw nemu istilah indexer yg waktu itu gw artiin sbagai array. Dan gw jawabnya ngasal soalnya baru nemu istilah tsb (kmana aja gw??). Ternyata, indexer itu emg array, cuman dibuat sedemikian rupa sehingga enak dipakenya.
/// <summary>
/// A simple indexer example.
/// </summary>
class IntIndexer
{
privatestring[] myData;
public IntIndexer(int size)
{
myData = new string[size];
for(int i=0; i < size; i++)
{
myData[i] = "empty";
}
}
public string this[int pos]
{
get
{
return myData[pos];
}
set
{
myData[pos] = value;
}
}
static void Main()
{
int size = 10;
IntIndexer myInd = new IntIndexer(size);
myInd[9] = "Some Value";
myInd[3] = "Another Value";
myInd[5] = "Any Value";
Console.WriteLine("\nIndexer Output\n");
for(int i=0; i < size; i++)
{
Console.WriteLine("myInd[{0}]:{1}", i, myInd[i]);
}
}
}
IntIndexer class punya string array dgn nama myData. Ini adalah private array yang gak bisa diakses langsung oleh pengguna eksternal. Array ini diinisialisasi dalam sebuah constructor, yang menerima input parameter int size, menginisialisasi myData array, kemudian mengisi setiap elemen dengan kata “empty”.
Anggota Class selanjutnya adalah Indexer, yang diidentifikasi dengan keyword this dan kurung siku, this[int pos]. Indexer ini menerima input posisi, pos. Seperti kita lihat, indexer diimplementasikan sama kayak Property.
Pada method Main() ditunjukan bagaimana cara implementasi dari Indexer tersebut, hingga memunculkan hasilnya. Dan hasilnya akan seperti ini :
Indexer Output
myInd[0]: empty
myInd[1]: empty
myInd[2]: empty
myInd[3]: Another Value
myInd[4]: empty
myInd[5]: Any Value
myInd[6]: empty
myInd[7]: empty
myInd[8]: empty
myInd[9]: Some Value