Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyahlanggan Pengendali Acara Lambda dalam C#?
Kaedah untuk berhenti melanggan pengendali acara Lambda dalam C#
Dalam C#, ungkapan Lambda tanpa nama menyediakan cara yang mudah untuk mencipta pengendali acara. Walau bagaimanapun, soalan biasa ialah: bagaimana untuk mengalih keluar atau menyahlanggan daripada pengendali acara ini.
Spesifikasi C# tidak menjamin bahawa dua ungkapan Lambda dengan kod yang sama akan menghasilkan perwakilan yang sama. Untuk memastikan penyahlangganan berjaya, adalah disyorkan untuk menyimpan contoh perwakilan secara eksplisit.
Gunakan kaedah EventHandler bernama
Cara paling mudah ialah mentakrifkan kaedah dan menetapkannya sebagai pengendali acara:
<code class="language-csharp">public void ShowWoho(object sender, EventArgs e) { MessageBox.Show("Woho"); } ... button.Click += ShowWoho; ... button.Click -= ShowWoho;</code>
Gunakan perwakilan untuk menyimpan pembolehubah
Untuk mencipta pengendali acara mengalih keluar sendiri menggunakan ungkapan Lambda, anda boleh menggunakan perwakilan untuk menyimpan pembolehubah:
<code class="language-csharp">EventHandler handler = null; handler = (sender, args) => { button.Click -= handler; // 取消订阅 // 在此处添加仅执行一次的代码 }; button.Click += handler;</code>
Gunakan kaedah pembantu
Walaupun kaedah pembantu tidak boleh digunakan untuk merangkum pengendali acara kerana batasan dalam perwakilan acara, perwakilan generik boleh memberikan penyelesaian:
<code class="language-csharp">button.Click += Delegates.AutoUnsubscribe<EventHandler>( (sender, args) => { // 此处添加仅执行一次的代码 }, handler => button.Click -= handler);</code>
Dengan mengikut kaedah ini, pembangun boleh mengalih keluar pengendali acara Lambda dengan berkesan, memastikan pengurusan acara yang betul dan kawalan ke atas kitaran hayat langganan acara.
Atas ialah kandungan terperinci Bagaimana untuk Menyahlanggan Pengendali Acara Lambda dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!