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!