Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kata
Peristiwa adalah anggota yang memungkinkan objek untuk memicu pemberitahuan. Pengguna peristiwa dapat melampirkan kode yang dapat dieksekusi untuk peristiwa dengan menyediakan penanganan aktivitas. Kata event kunci mendeklarasikan peristiwa. Kejadian ini berjenis delegasi. Saat objek memicu peristiwa, peristiwa memanggil semua penanganan aktivitas yang disediakan. Penanganan aktivitas adalah instans delegasi yang ditambahkan ke peristiwa dan dijalankan saat peristiwa dinaikkan. Pengguna peristiwa dapat menambahkan atau menghapus penanganan aktivitas mereka pada suatu peristiwa.
Contoh berikut menunjukkan cara mendeklarasikan dan memunculkan peristiwa yang menggunakan EventHandler sebagai jenis delegasi yang mendasar. Untuk contoh kode lengkap, lihat Cara menerbitkan peristiwa yang sesuai dengan Pedoman .NET. Sampel tersebut menunjukkan jenis delegasi generik EventHandler<TEventArgs> , cara berlangganan peristiwa, dan membuat metode penanganan aktivitas,
public class SampleEventArgs
{
public SampleEventArgs(string text) { Text = text; }
public string Text { get; } // readonly
}
public class Publisher
{
// Declare the delegate (if using non-generic pattern).
public delegate void SampleEventHandler(object sender, SampleEventArgs e);
// Declare the event.
public event SampleEventHandler SampleEvent;
// Wrap the event in a protected virtual method
// to enable derived classes to raise the event.
protected virtual void RaiseSampleEvent()
{
// Raise the event in a thread-safe manner using the ?. operator.
SampleEvent?.Invoke(this, new SampleEventArgs("Hello"));
}
}
Peristiwa adalah delegasi multicast yang hanya dapat dipanggil dari dalam kelas (atau kelas turunan) atau struktur tempat mereka dideklarasikan (kelas penerbit). Jika kelas atau struct lain berlangganan acara, metode penanganan aktivitas mereka dipanggil saat kelas penerbit menaikkan acara. Untuk informasi lebih lanjut dan contoh kode, lihat Peristiwa dan Delegasi.
Peristiwa dapat ditandai sebagai public, , private, protectedinternal, protected internal, atau private protected. Pengubah akses ini menentukan bagaimana pengguna kelas dapat mengakses peristiwa. Untuk informasi selengkapnya, lihat Pengubah Akses.
Dimulai dengan C# 14, peristiwa dapat berupa partial. Peristiwa parsial memiliki satu deklarasi yang mendefinisikan dan satu deklarasi implementasi. Deklarasi yang menentukan harus menggunakan sintaks seperti bidang. Deklarasi pelaksana harus mendeklarasikan penanganan add dan remove.
Kata kunci dan peristiwa
Kata kunci berikut berlaku untuk peristiwa.
| Kata kunci | Deskripsi | Untuk informasi lebih lanjut |
|---|---|---|
static |
Membuat peristiwa tersedia untuk penelepon kapan saja, bahkan jika tidak ada contoh kelas. | Kelas Statis dan Anggota Kelas Statis |
virtual |
Memungkinkan kelas turunan untuk mengambil alih perilaku peristiwa dengan menggunakan kata kunci ambil alih. | Warisan |
sealed |
Menentukan bahwa untuk kelas turunan tidak lagi virtual. | |
abstract |
Pengkompilasi tidak menghasilkan add blok pengakses peristiwa dan remove oleh karena itu kelas turunan harus memberikan implementasi mereka sendiri. |
Peristiwa dapat dinyatakan sebagai peristiwa statis dengan menggunakan kata kunci statis . Peristiwa statis tersedia untuk penelepon kapan saja, bahkan jika tidak ada instans kelas. Untuk informasi lebih lanjut, lihat Kelas Statik dan Anggota Kelas Statik.
Peristiwa dapat ditandai sebagai peristiwa virtual dengan menggunakan virtual kata kunci. Kelas turunan dapat mengambil alih perilaku peristiwa dengan menggunakan override kata kunci. Untuk informasi selengkapnya, lihat Warisan. Peristiwa yang mengambil alih peristiwa virtual juga dapat berupa sealed, yang menentukan bahwa untuk kelas turunan tidak lagi virtual. Terakhir, peristiwa dapat dideklarasikan abstract, yang berarti bahwa pengkompilasi tidak menghasilkan add blok aksesor peristiwa dan remove . Oleh karena itu kelas turunan harus menyediakan implementasinya sendiri.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.