Delegat dan Peristiwa
Pelajari cara delegat dan peristiwa membolehkan komunikasi antara objek dalam C#
Delegat dan Peristiwa ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 5 daripada 6. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi C#, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi C# merangkumi sejumlah 6 pelajaran.
Delegate dan Peristiwa
Selamat datang ke pelajaran seterusnya! Dalam pelajaran ini, anda akan mempelajari tentang delegate dan peristiwa dalam C#, tujuannya, serta cara kedua-duanya membolehkan pengaturcaraan dipacu peristiwa. Mari mulakan!

Apakah Delegate?
delegate ialah jenis yang mewakili rujukan kepada kaedah. Ia membolehkan kaedah dihantar sebagai parameter dan dipanggil secara dinamik.
Perkara Utama: Delegate penting untuk melaksanakan peristiwa dan fungsi panggil balik dalam C#.
Mentakrifkan dan Menggunakan Delegate
Untuk mentakrifkan delegate, gunakan kata kunci delegate. Contoh:
using System;
class Program {
// Define a delegate
public delegate void MessageDelegate(string message);
static void DisplayMessage(string message) {
Console.WriteLine(message);
}
static void Main() {
// Create a delegate instance
MessageDelegate msg = DisplayMessage;
// Invoke the delegate
msg("Hello, Delegates!");
}
}
Delegate Berbilang Siaran
Satu delegate boleh menunjuk kepada beberapa kaedah dan semua kaedah akan dipanggil mengikut susunan. Contoh:
Petua: Gunakan delegate berbilang siaran apabila beberapa tindakan perlu dilaksanakan.
using System;
class Program {
public delegate void MessageDelegate(string message);
static void ShowMessage(string message) {
Console.WriteLine("Message: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
static void Main() {
MessageDelegate msg = ShowMessage;
msg += LogMessage; // Add another method
msg("Hello, Multicast Delegates!"); // Both methods are invoked
}
}
Apakah Peristiwa?
peristiwa ialah mekanisme yang membolehkan kelas memberitahu kelas atau objek lain apabila sesuatu yang penting berlaku. Peristiwa dibina berasaskan delegate.
Perkara Utama: Peristiwa membolehkan gandingan longgar antara Publisher dan Subscriber dalam pengaturcaraan dipacu peristiwa.
Mentakrifkan dan Menggunakan Peristiwa
Untuk mentakrifkan peristiwa, gunakan kata kunci event bersama jenis delegate. Contoh:
Perkara Utama: Peristiwa membolehkan anda membina sistem reaktif dan dipacu peristiwa.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify; // Define an event
public void RaiseEvent(string message) {
Notify?.Invoke(message); // Invoke the event
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe to the event
pub.RaiseEvent("Hello, Events!"); // Raise the event
}
}
Membatalkan Langganan Peristiwa
Subscriber boleh membatalkan langganan peristiwa menggunakan -= operator. Contoh:
Petua: Sentiasa batalkan langganan peristiwa untuk mengelakkan kebocoran memori.
using System;
class Publisher {
public delegate void NotifyDelegate(string message);
public event NotifyDelegate Notify;
public void RaiseEvent(string message) {
Notify?.Invoke(message);
}
}
class Subscriber {
public void OnNotify(string message) {
Console.WriteLine("Subscriber received: " + message);
}
}
class Program {
static void Main() {
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
pub.Notify += sub.OnNotify; // Subscribe
pub.RaiseEvent("First Message");
pub.Notify -= sub.OnNotify; // Unsubscribe
pub.RaiseEvent("Second Message"); // No output, as subscriber is removed
}
}
Cabaran Latihan
Cipta delegate CalculationDelegate untuk operasi aritmetik dan peristiwa OnCalculate. Tulis atur cara yang mencetuskan peristiwa dan melaksanakan pengiraan. Contoh:
using System;
class Calculator {
public delegate void CalculationDelegate(double result);
public event CalculationDelegate OnCalculate;
public void Add(double a, double b) {
double result = a + b;
OnCalculate?.Invoke(result);
}
}
class Program {
static void Main() {
Calculator calc = new Calculator();
// Subscribe to the event
calc.OnCalculate += result => Console.WriteLine("Result: " + result);
calc.Add(5, 3); // Outputs: Result: 8
}
}
Syabas!
Tahniah! Anda telah mempelajari cara menggunakan delegate dan peristiwa untuk membina atur cara yang dinamik serta dipacu peristiwa. Dalam pelajaran seterusnya, kita akan meneroka cara bekerja dengan koleksi seperti senarai, kamus dan baris gilir. Mari terus menulis kod!

Pelajari C# dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Soalan Lazim
Adakah pelajaran “Delegat dan Peristiwa” percuma?
Ya — teks penuh “Delegat dan Peristiwa” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Akademi C#, tingkat taraf kepada CoddyKit PRO. Kursus Akademi C# merangkumi sejumlah 6 pelajaran.
Apakah yang akan saya pelajari dalam “Delegat dan Peristiwa”?
Pelajari cara delegat dan peristiwa membolehkan komunikasi antara objek dalam C# Anda berlatih Akademi C# menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi C#?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi C# di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 5 daripada 6.
Berapa lamakah pelajaran “Delegat dan Peristiwa” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi C# ini?
Ya. Setiap pelajaran Akademi C# menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengenalan kepada Antara Muka
- Kelas Abstrak
- Ahli dan Kaedah Statik
- Meneroka Enum dan Struct
- Delegat dan Peristiwa
- Bekerja dengan Koleksi: Senarai, Kamus dan Baris Gilir