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.
Referensi bahasa C# mendokumentasikan versi bahasa C# yang paling baru dirilis. Ini juga berisi dokumentasi awal untuk fitur dalam pratinjau publik untuk rilis bahasa yang akan datang.
Dokumentasi mengidentifikasi fitur apa pun yang pertama kali diperkenalkan dalam tiga versi terakhir bahasa atau dalam pratinjau publik saat ini.
Petunjuk / Saran
Untuk menemukan kapan fitur pertama kali diperkenalkan di C#, lihat artikel tentang riwayat versi bahasa C#.
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 Anda panggil dari dalam kelas (atau kelas turunan) atau struct tempat Anda mendeklarasikannya (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.
Anda dapat menandai peristiwa sebagai public, , protectedprivate, internal, 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, Anda dapat mendeklarasikan peristiwa sebagai 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.
-
static: Membuat peristiwa tersedia untuk pemanggil kapan saja, bahkan jika tidak ada instans kelas. Untuk informasi selengkapnya tentang peristiwa statis, lihat Kelas Statis dan Anggota Kelas Statis. -
virtual: Memungkinkan kelas turunan untuk mengambil alih perilaku peristiwa dengan menggunakan kata kunci penimpaan . Untuk informasi selengkapnya tentang peristiwa virtual, lihat Warisan. -
sealed: Menentukan bahwa untuk kelas turunan tidak lagi virtual. -
abstract: Pengkompilasi tidak menghasilkanaddblok pengakses peristiwa danremoveoleh karena itu kelas turunan harus memberikan implementasi mereka sendiri.
static Gunakan kata kunci untuk mendeklarasikan peristiwa sebagai peristiwa 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.
virtual Gunakan kata kunci untuk menandai peristiwa sebagai peristiwa virtual. 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 memberikan implementasinya sendiri.
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat Spesifikasi Bahasa C#. Spesifikasi bahasa adalah sumber definitif untuk sintaks dan penggunaan C#.