Method dan Class Generic pada Bahasa Pemrograman C#
Pernah nggak sih, nulis kode yang hampir sama tapi untuk tipe data berbeda? Misalnya, kamu bikin method buat mencari nilai terbesar dalam array int
, terus harus bikin lagi buat double
, string
, dan sebagainya? Nah, Generic di C# bisa menyelesaikan masalah ini!
Generic memungkinkan kita membuat method dan class yang bisa bekerja dengan berbagai tipe data, tanpa harus bikin kode yang berulang. Ini bikin kode lebih fleksibel, reusable, dan lebih gampang dikelola.
Yuk, kita bahas apa itu generic dalam C#, gimana cara pakenya, dan contoh implementasinya!
1. Apa Itu Generic dalam C#?
Generic adalah fitur dalam C# yang memungkinkan kita menulis kode yang bisa menangani berbagai tipe data tanpa perlu mendefinisikannya secara spesifik.
Ciri-Ciri Generic
✅ Menghindari duplikasi kode untuk tipe data yang berbeda.
✅ Membantu membuat kode lebih fleksibel dan reusable.
✅ Digunakan dalam method, class, interface, dan delegate.
✅ Bekerja dengan berbagai tipe data tanpa mengorbankan performa.
Bayangkan generic itu seperti wadah serbaguna. Misalnya, kamu punya botol minum kosong yang bisa diisi air, jus, atau kopi. Kamu nggak perlu bikin botol khusus buat tiap minuman, kan? Sama halnya dengan generic!
2. Generic Method dalam C#
Generic method memungkinkan kita membuat method yang bisa bekerja dengan berbagai tipe data.
Contoh Generic Method
using System;
class Program {
static void Tampilkan<T>(T input) {
Console.WriteLine("Nilai: " + input);
}
static void Main() {
Tampilkan(100); // Integer
Tampilkan(99.9); // Double
Tampilkan("Halo!"); // String
}
}
Output:
Nilai: 100
Nilai: 99.9
Nilai: Halo!
Penjelasan:
<T>
menunjukkan bahwa methodTampilkan
bisa menerima tipe data apa pun.- Saat dipanggil, C# akan otomatis menentukan tipe data yang cocok.
3. Generic Class dalam C#
Kalau kita butuh membuat class yang fleksibel dan bisa menangani berbagai tipe data, kita bisa pakai generic class.
Contoh Generic Class
using System;
class Kotak<T> {
private T isi;
public void Simpan(T item) {
isi = item;
}
public T Ambil() {
return isi;
}
}
class Program {
static void Main() {
Kotak<int> angka = new Kotak<int>();
angka.Simpan(42);
Console.WriteLine("Isi kotak angka: " + angka.Ambil());
Kotak<string> kata = new Kotak<string>();
kata.Simpan("Hello, World!");
Console.WriteLine("Isi kotak kata: " + kata.Ambil());
}
}
Output:
Isi kotak angka: 42
Isi kotak kata: Hello, World!
Penjelasan:
Kotak<T>
adalah generic class yang bisa menyimpan data dengan tipe apa saja.Simpan(T item)
danAmbil()
bisa menangani berbagai tipe data.- Kita bisa pakai
Kotak<int>
buat angka danKotak<string>
buat teks.
4. Batasan Tipe Data dengan where
Kadang kita ingin membatasi tipe data yang bisa digunakan dalam generic. Misalnya, kita cuma mau tipe data yang bisa dibandingkan.
using System;
class Pembanding<T> where T : IComparable<T> {
public T Bandingkan(T a, T b) {
return a.CompareTo(b) > 0 ? a : b;
}
}
class Program {
static void Main() {
Pembanding<int> angka = new Pembanding<int>();
Console.WriteLine("Lebih besar: " + angka.Bandingkan(10, 20));
}
}
Output:
Lebih besar: 20
Kenapa pakai where T : IComparable<T>
?
- Karena kita butuh
CompareTo()
, dan nggak semua tipe data punya method ini. - Dengan
where
, kita bisa memastikan T hanya bisa berupa tipe yang bisa dibandingkan.
5. Generic dengan Multiple Parameter Tipe Data
Kita juga bisa menggunakan lebih dari satu parameter tipe data dalam generic.
using System;
class Pasangan<T, U> {
private T item1;
private U item2;
public Pasangan(T a, U b) {
item1 = a;
item2 = b;
}
public void Tampilkan() {
Console.WriteLine("Item 1: " + item1);
Console.WriteLine("Item 2: " + item2);
}
}
class Program {
static void Main() {
Pasangan<int, string> pasangan = new Pasangan<int, string>(1, "Satu");
pasangan.Tampilkan();
}
}
Output:
Item 1: 1
Item 2: Satu
Penjelasan:
Pasangan<T, U>
punya dua tipe data (T
danU
).- Bisa menyimpan dua item dengan tipe yang berbeda.
6. Kapan Harus Menggunakan Generic?
✅ Gunakan generic jika:
- Kamu butuh kode yang fleksibel untuk berbagai tipe data.
- Mau menghindari duplikasi kode dengan tipe berbeda.
- Butuh class atau method yang bisa digunakan secara luas.
❌ Jangan gunakan generic jika:
- Tipe datanya sudah pasti dan nggak butuh fleksibilitas.
- Kamu bisa pakai inheritance atau interface sebagai alternatif.
7. Kesimpulan
- Generic memungkinkan kita membuat method dan class yang bisa bekerja dengan berbagai tipe data.
- Menggunakan
<T>
memungkinkan kode lebih fleksibel dan reusable. - Bisa menggunakan batasan tipe (
where
) untuk membatasi jenis data yang bisa dipakai. - Generic membantu menulis kode yang lebih rapi, efisien, dan mudah dikelola.
Dengan memahami Generic dalam C#, kamu bisa bikin program yang lebih fleksibel dan scalable!