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
Susan Sarandonasal
2025-01-23 08:31:10438semak imbas

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>

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>

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!

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