Rumah > pembangunan bahagian belakang > C++ > Patutkah Anda Menggunakan Perwakilan Tanpa Nama Kosong dalam Pengisytiharan Acara?

Patutkah Anda Menggunakan Perwakilan Tanpa Nama Kosong dalam Pengisytiharan Acara?

Barbara Streisand
Lepaskan: 2024-12-29 16:10:12
asal
199 orang telah melayarinya

Should You Use Empty Anonymous Delegates in Event Declarations?

Kosongkan Perwakilan Tanpa Nama dalam Pengisytiharan Acara: Kemungkinan Kelemahan

Dalam pengaturcaraan acara, amalan biasa menambah perwakilan tanpa nama kosong terus pada pengisytiharan acara , seperti yang dilihat di bawah, memudahkan peningkatan acara dengan menghapuskan keperluan untuk null semak:

// Deliberately empty subscriber
public event EventHandler AskQuestion = delegate {};
Salin selepas log masuk

Walaupun teknik ini menyelesaikan isu tertentu, adalah penting untuk mempertimbangkan potensi kelemahan:

  1. Kesan Prestasi: Memanggil pelanggan perwakilan kosong untuk setiap panggilan acara boleh memperkenalkan overhed prestasi yang boleh diabaikan. Dalam senario frekuensi tinggi, ini boleh terkumpul.
  2. Overhed Penyelenggaraan: Walaupun niat perwakilan kosong mungkin jelas pada mulanya, ia mungkin tidak dapat menjelaskan sendiri dari semasa ke semasa. Ini boleh menyebabkan pening kepala penyelenggaraan bagi pembangun yang tidak biasa dengan corak tersebut.

Daripada bergantung pada perwakilan kosong, pendekatan alternatif ialah memanfaatkan kaedah lanjutan yang mengendalikan semakan nol dan memudahkan peningkatan acara:

public static void Raise(this EventHandler handler, object sender, EventArgs e)
{
    if(handler != null)
    {
        handler(sender, e);
    }
}
Salin selepas log masuk

Menggunakan sambungan ini, peningkatan acara menjadi mudah dan mengurangkan semakan batal overhead:

// Works, even for null events.
MyButtonClick.Raise(this, EventArgs.Empty);
Salin selepas log masuk

Penyelesaian berasaskan sambungan ini menghapuskan kedua-dua kelemahan prestasi dan penyelenggaraan yang dikaitkan dengan perwakilan kosong tanpa nama dalam pengisytiharan acara.

Atas ialah kandungan terperinci Patutkah Anda Menggunakan Perwakilan Tanpa Nama Kosong dalam Pengisytiharan Acara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan