在事件驅動程式設計中,事件處理程序通常使用僅接受傳送者物件作為參數的方法進行指派。但是,有時您可能需要向事件處理程序傳遞其他資料。
範例:
考慮以下程式碼:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); } public void evHandler(Object sender) { // 需要在此处使用 someData!!! }</code>
在此範例中,evHandler 是一個事件處理程序,需要存取在 setup 方法中可用的 someData 字串。
解:
要將 someData 傳遞給 evHandler,您可以使用 lambda 表達式定義事件處理程序,如下所示:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); } public void evHandler(Object sender, string someData) { // 需要在此处使用 someData!!! }</code>
在此程式碼中,lambda 表達式 (sender) => evHandler(sender, someData)
建立一個新的事件處理程序,該處理程序將發送者物件作為參數並將其與 someData 一起傳遞給 evHandler 方法。這確保了 someData 在事件處理程序中可用。
以上是如何在 C# 中將附加參數傳遞給事件處理程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!