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
Barbara Streisandasal
2024-12-29 16:10:12221semak imbas

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 {};

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);
    }
}

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

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

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!

Kenyataan:
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