Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menghantar Parameter Tambahan kepada Pengendali Acara dalam C#?

Bagaimanakah saya boleh menghantar Parameter Tambahan kepada Pengendali Acara dalam C#?

Susan Sarandon
Lepaskan: 2025-01-23 08:31:10
asal
439 orang telah melayarinya

How Can I Pass Extra Parameters to an Event Handler in C#?

Mengirim Data Tambahan kepada Pengendali Acara C#

Pengendali acara adalah penting dalam C# untuk bertindak balas kepada acara. Walau bagaimanapun, tandatangan pengendali acara standard selalunya hanya menyediakan objek sender. Ini mengehadkan keupayaan untuk melepasi konteks tambahan. Jom teroka penyelesaian:

Pertimbangkan senario ini:

<code class="language-csharp">private void setup(string someData)
{
    Object.assignHandler(evHandler); // Only sender is passed
}

public void evHandler(Object sender)
{
    // someData is inaccessible here
}</code>
Salin selepas log masuk

someData diperlukan dalam evHandler, tetapi mekanisme acara standard tidak membenarkan kemasukan langsungnya.

Penyelesaian Ekspresi Lambda

Penyelesaian terletak pada penggunaan ungkapan lambda apabila menetapkan pengendali acara:

<code class="language-csharp">private void setup(string someData)
{
    Object.assignHandler((sender) => evHandler(sender, someData)); // Lambda expression to pass additional data
}

public void evHandler(Object sender, string someData)
{
    // Now someData is accessible!
}</code>
Salin selepas log masuk

Ungkapan lambda (sender) => evHandler(sender, someData) mencipta kaedah tanpa nama. Kaedah ini menerima objek sender daripada acara dan kemudian memanggil evHandler, melepasi kedua-dua sender dan someData. Ini secara berkesan membolehkan anda menyuntik parameter tambahan ke dalam pengendali acara anda. Pendekatan ini menawarkan peningkatan fleksibiliti dan kawalan ke atas data yang dihantar kepada logik pengendalian acara anda.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menghantar Parameter Tambahan kepada Pengendali Acara dalam C#?. 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