Indexer pada Bahasa Pemrograman C#
Dalam C#, indexer adalah fitur yang memungkinkan objek diperlakukan seperti array. Dengan menggunakan indexer, kita bisa mengakses elemen dalam class menggunakan operator indeks ([]
), mirip dengan array atau koleksi lainnya.
Artikel ini akan membahas apa itu indexer dalam C#, bagaimana cara menggunakannya, serta contoh implementasi dalam berbagai skenario pemrograman.
1. Apa Itu Indexer dalam C#?
Indexer memungkinkan sebuah objek untuk mengakses elemen internal dengan sintaks mirip array tanpa harus membuat method tambahan seperti GetItem()
atau SetItem()
.
Sintaks Dasar Indexer
class NamaClass {
private tipe[] array = new tipe[jumlah_elemen];
public tipe this[int index] {
get { return array[index]; }
set { array[index] = value; }
}
}
this[int index]
→ Mendefinisikan indexer yang menerima indeks bertipe integer.get
→ Mengembalikan nilai pada indeks tertentu.set
→ Mengatur nilai pada indeks tertentu.
2. Contoh Penggunaan Indexer dalam C#
2.1 Indexer Sederhana dalam Class
using System;
class Buku {
private string[] daftarBuku = new string[5];
public string this[int index] {
get { return daftarBuku[index]; }
set { daftarBuku[index] = value; }
}
}
class Program {
static void Main() {
Buku koleksi = new Buku();
koleksi[0] = "C# Programming";
koleksi[1] = "Data Structures";
Console.WriteLine("Buku pertama: " + koleksi[0]);
Console.WriteLine("Buku kedua: " + koleksi[1]);
}
}
Output:
Buku pertama: C# Programming
Buku kedua: Data Structures
Penjelasan:
- Indexer memungkinkan objek
Buku
diperlakukan seperti array. koleksi[0] = "C# Programming";
→ Mengisi elemen pertama.Console.WriteLine(koleksi[0]);
→ Mengakses nilai yang tersimpan dalam index pertama.
2.2 Indexer dengan Validasi Input
Kita bisa menambahkan validasi dalam set
untuk menghindari kesalahan akses indeks.
class KoleksiBuku {
private string[] buku = new string[3];
public string this[int index] {
get {
if (index < 0 || index >= buku.Length) {
return "Indeks di luar batas!";
}
return buku[index];
}
set {
if (index >= 0 && index < buku.Length) {
buku[index] = value;
} else {
Console.WriteLine("Error: Indeks di luar batas!");
}
}
}
}
class Program {
static void Main() {
KoleksiBuku koleksi = new KoleksiBuku();
koleksi[0] = "C# Dasar";
koleksi[3] = "Java Dasar"; // Akan menghasilkan error
Console.WriteLine(koleksi[0]);
Console.WriteLine(koleksi[3]); // Akan menampilkan pesan error
}
}
Output:
Error: Indeks di luar batas!
C# Dasar
Indeks di luar batas!
Penjelasan:
- Jika indeks berada di luar batas array, akan ditampilkan pesan kesalahan.
- Ini berguna untuk mencegah akses ke elemen yang tidak tersedia.
3. Menggunakan Indexer dengan String Key
Selain indeks numerik, kita juga bisa menggunakan string sebagai indeks dalam indexer.
using System;
using System.Collections.Generic;
class Kontak {
private Dictionary<string, string> kontakList = new Dictionary<string, string>();
public string this[string nama] {
get {
return kontakList.ContainsKey(nama) ? kontakList[nama] : "Kontak tidak ditemukan";
}
set {
kontakList[nama] = value;
}
}
}
class Program {
static void Main() {
Kontak kontak = new Kontak();
kontak["Budi"] = "08123456789";
kontak["Siti"] = "08987654321";
Console.WriteLine("Nomor Budi: " + kontak["Budi"]);
Console.WriteLine("Nomor Andi: " + kontak["Andi"]); // Tidak ada dalam daftar
}
}
Output:
Nomor Budi: 08123456789
Kontak tidak ditemukan
Penjelasan:
- Menggunakan
Dictionary<string, string>
sebagai penyimpanan data. - Indexer menggunakan string sebagai kunci untuk mengakses data.
- Jika kontak tidak ditemukan, akan menampilkan pesan kesalahan.
4. Kapan Harus Menggunakan Indexer?
✅ Gunakan indexer jika:
- Ingin membuat class yang dapat diakses dengan sintaks array.
- Membutuhkan cara mudah untuk mengakses koleksi data tanpa harus memanggil method.
- Ingin mendukung akses berdasarkan indeks numerik atau string seperti dictionary.
❌ Jangan gunakan indexer jika:
- Koleksi data bisa lebih jelas dengan method tradisional.
- Tidak memerlukan fleksibilitas akses dengan sintaks
[]
.
5. Kesimpulan
- Indexer memungkinkan objek dalam C# diperlakukan seperti array.
- Dapat digunakan dengan indeks numerik atau string.
- Bisa digunakan dalam validasi input untuk mencegah akses indeks yang tidak valid.
- Sangat berguna dalam koleksi data seperti list dan dictionary.
Dengan memahami indexer dalam C#, Anda bisa membuat class yang lebih fleksibel dan mudah digunakan dalam berbagai skenario pemrograman!