C# - Delegates: Panduan Ramah untuk Pemula
Halo sana, bakal superstar pengoding! Hari ini, kita akan mendalam ke dunia yang menarik dari C# delegates. Jangan khawatir jika Anda belum pernah mendengar tentang mereka sebelumnya - pada akhir tutorial ini, Anda akan menjadi ahli delegate! Mari kita mulai perjalanan yang menarik ini bersama-sama.
Apa Itu Delegates?
Bayangkan Anda sedang mengatur sebuah pesta, dan Anda perlu seseorang untuk mengatur musik. Daripada melakukan itu sendiri, Anda menyerahkan tugas ini kepada teman Anda yang seorang DJ. Di C#, delegates bekerja secara mirip - mereka seperti pengirim kecil yang dapat menahan dan menjalankan method bagi kita.
Dalam kata yang sederhana, delegate adalah jenis yang mewakili referensi ke method dengan daftar parameter tertentu dan tipe kembalian. Pahami ini seperti blueprint untuk method.
Mendeklarasikan Delegates
Mari kita mulai dengan belajar bagaimana mendeklarasikan delegate. Sintaksanya cukup sederhana:
public delegate void SimpleDelegate();
Ini mendeklarasikan delegate bernama SimpleDelegate
yang dapat merujuk ke method yang tidak mengambil parameter dan mengembalikan nothing (void).
Ini adalah contoh lain:
public delegate int MathDelegate(int x, int y);
MathDelegate
ini dapat merujuk ke method yang mengambil dua integer dan mengembalikan integer.
Inisialisasi Delegates
Sekarang kita telah mendeklarasikan delegates, mari kita lihat bagaimana menggunakannya. Kita akan mulai dengan membuat method yang cocok dengan tanda tangan delegate:
public static void SayHello()
{
Console.WriteLine("Hello, Delegates!");
}
// Inisialisasi delegate
SimpleDelegate greet = new SimpleDelegate(SayHello);
// Menggunakan delegate
greet();
Ketika kita menjalankan kode ini, ia akan menampilkan: "Hello, Delegates!"
mari kitauraikan:
- Kita mendefinisikan method
SayHello
yang cocok dengan tanda tanganSimpleDelegate
. - Kita membuat instance dari
SimpleDelegate
dan menugaskan methodSayHello
kepadanya. - Kita menjalankan delegate menggunakan
greet()
, yang kemudian menjalankanSayHello
.
Multicasting Delegate
Sekarang, mari kita lihat bagian yang sangat menarik tentang delegates. Mereka dapat menahan referensi ke beberapa method! Ini disebut multicasting. Mari kita lihat dalam praktik:
public static void SayHello() { Console.WriteLine("Hello"); }
public static void SayGoodbye() { Console.WriteLine("Goodbye"); }
SimpleDelegate greetings = SayHello;
greetings += SayGoodbye;
greetings(); // Ini akan menjalankan baik `SayHello` dan `SayGoodbye`
Output:
Hello
Goodbye
Apakah itu menarik? Kita telah menambahkan dua method ke delegate kami, dan ketika kita menjalankan itu, kedua method tersebut dipanggil dalam urutan mereka ditambahkan.
Menggunakan Delegates
Delegates sangat berguna dalam banyak kasus. Salah satu penggunaan umum adalah dalam pengelolaan event. Mari kita lihat contoh sederhana:
public delegate void TemperatureChangedHandler(float newTemperature);
class Thermostat
{
private float _temperature;
public event TemperatureChangedHandler TemperatureChanged;
public float Temperature
{
get { return _temperature; }
set
{
if (_temperature != value)
{
_temperature = value;
OnTemperatureChanged();
}
}
}
protected virtual void OnTemperatureChanged()
{
if (TemperatureChanged != null)
{
TemperatureChanged(_temperature);
}
}
}
class Program
{
static void Main()
{
Thermostat thermostat = new Thermostat();
thermostat.TemperatureChanged += HandleTemperatureChange;
thermostat.Temperature = 25.5f;
}
static void HandleTemperatureChange(float newTemperature)
{
Console.WriteLine($"Temperature changed to {newTemperature}°C");
}
}
Dalam contoh ini, kita telah membuat kelas Thermostat
yang menggunakan delegate untuk memberitahu saat suhu berubah. Metode Main
mensubskripsi ke event ini, dan saat suhu diatur, ia memicu metode HandleTemperatureChange
.
Metode Delegate
Berikut adalah tabel dari beberapa metode yang berkaitan dengan delegate:
Metode | Deskripsi |
---|---|
Invoke | Memanggil method yang dipegang oleh delegate |
BeginInvoke | Memulai panggilan asinkronus delegate |
EndInvoke | Menyelesaikan panggilan asinkronus delegate |
GetInvocationList | Mengembalikan array dari delegate yang mewakili daftar panggilan |
Kesimpulan
Selamat! Anda telah mengambil langkah pertama ke dunia C# delegates. Kita telah melihat mendeklarasikan delegates, menginisialisasikan mereka, multicasting, dan bahkan melihat contoh praktis dengan pengelolaan event.
Ingat, delegates mungkin terlihat abstrak pada awalnya, tetapi mereka adalah tools yang sangat kuat di C#. Mereka memungkinkan desain yang fleksibel dan lepas kait, khususnya dalam programming yang terdorong oleh event.
Sebagai Anda terus menjalankan perjalanan C# Anda, Anda akan menemukan banyak penggunaan untuk delegates. Mereka seperti pisau multitugas di dalam alat pengoding Anda - multifungsi dan selalu membantu saat Anda membutuhkannya.
Terus latihan, tetap bersemangat, dan sebelum Anda sadari, Anda akan dapat menyerahkan tugas ke kode Anda seperti seorang pro! Selamat coding!
Credits: Image by storyset