Panduan Menyenaraikan Delegasi dalam C#: Panduan Untuk Pemula

Hai sana, bakal bintang pengkomputeran! Hari ini, kita akan melantikan masuk ke dunia yang menarik delegasi C#. Jangan khawatir jika Anda belum pernah mendengar tentang mereka sebelumnya - pada akhir panduan ini, Anda akan menjadi ahli delegasi! Mari kita mulai perjalanan yang menarik ini bersama-sama.

C# - Delegates

Apa Itu Delegasi?

Bayangkan Anda sedang mengatur sebuah pesta dan Anda perlu seseorang untuk mengurus musik. Alih-alih melakukan itu sendiri, Anda menyerahkan tugas ini kepada teman Anda yang seorang DJ. Dalam C#, delegasi bekerja secara mirip - mereka seperti kurir kecil yang dapat menahan dan memanggil method bagi kita.

Dalam istilah yang lebih sederhana, delegasi adalah jenis yang mewakili referensi ke method dengan daftar parameter tertentu dan jenis kembalian. Bayangkan itu seperti rancangan untuk method.

Menyatakan Delegasi

Mari kita mulai dengan belajar bagaimana menyatakan delegasi. Sintaksanya cukup sederhana:

public delegate void SimpleDelegate();

Ini menyatakan delegasi bernama SimpleDelegate yang dapat merujuk ke method yang tidak menerima parameter dan mengembalikan nihil (void).

Ini adalah contoh lainnya:

public delegate int MathDelegate(int x, int y);

MathDelegate ini dapat merujuk ke method yang menerima dua integer dan mengembalikan integer.

Menginstansiasi Delegasi

Sekarang kita telah menyatakan delegasi kita, mari kita lihat bagaimana menggunakannya. Kita akan mulai dengan membuat method yang cocok dengan tanda tangan delegasi kita:

public static void SayHello()
{
Console.WriteLine("Hello, Delegates!");
}

// Menginstansiasi delegasi
SimpleDelegate greet = new SimpleDelegate(SayHello);

// Memanggil delegasi
greet();

Ketika kita menjalankan kode ini, ia akan mencetak: "Hello, Delegates!"

Mari kitauraikan ini:

  1. Kita menetapkan method SayHello yang cocok dengan tanda tangan SimpleDelegate.
  2. Kita membuat instance SimpleDelegate dan menugaskan method SayHello kepadanya.
  3. Kita memanggil delegasi menggunakan greet(), yang kemudian memanggil SayHello.

Multicasting Delegasi

Sekarang, mari kita lihat bagaimana delegasi menjadi sangat menarik. Mereka dapat menahan referensi ke beberapa method! Ini disebut multicasting. Mari kita lihatnya dalam aksi:

public static void SayHello() { Console.WriteLine("Hello"); }
public static void SayGoodbye() { Console.WriteLine("Goodbye"); }

SimpleDelegate greetings = SayHello;
greetings += SayGoodbye;

greetings(); // Ini akan memanggil baik SayHello dan SayGoodbye

Output:

Hello
Goodbye

Apakah itu menarik? Kita telah menambahkan dua method ke delegasi kita, dan ketika kita memanggilnya, kedua method tersebut dipanggil dalam urutan mereka ditambahkan.

Menggunakan Delegasi

Delegasi sangat berguna dalam banyak konteks. Salah satu penggunaan umum adalah dalam pengaturan acara. 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 delegasi untuk memberitahu saat suhu berubah. Method Main berlangganan ke acara ini, dan saat suhu diatur, ia memicu method HandleTemperatureChange.

Method Delegasi

Ini adalah tabel dari beberapa method yang berkaitan dengan delegasi:

Method Description
Invoke Memanggil method yang dipegang oleh delegasi
BeginInvoke Memulai panggilan asinkron delegasi
EndInvoke Mengakhiri panggilan asinkron delegasi
GetInvocationList Mengembalikan array delegasi yang mewakili daftar panggilan

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia delegasi C#. Kita telah menyoroti menyatakan delegasi, menginstansiasinya, multicasting, dan bahkan melihat contoh praktis dalam pengaturan acara.

Ingat, delegasi mungkin tampak abstrak pada awalnya, tetapi mereka adalah alat yang sangat kuat dalam C#. Mereka memungkinkan desain yang fleksibel dan lepas terikat, khususnya dalam programming yang didorong oleh acara.

Sebagai Anda terus melanjutkan perjalanan C# Anda, Anda akan menemukan banyak penggunaan untuk delegasi. Mereka seperti pisau Switzerland di dalam kotak alat Anda - multifungsi dan selalu membantu saat Anda membutuhkannya.

Terus latihan, tetap kurios, dan sebelum Anda tahu, Anda akan menyerahkan tugas ke kode Anda seperti seorang pro! Selamat coding!

Credits: Image by storyset