You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否合并主体相同的两个Lambda表达式以避免重复代码?

可以合并Lambda表达式避免重复代码吗?

当然可以,核心思路就是把两段Lambda里重复的逻辑抽成独立的异步方法,再分别绑定到两个事件上,这样就不用重复维护相同代码了。

先看你原来的代码:

myEntry.Unfocused += async (s, e) =>
                {
                   // 重复的代码
                }

myButton.Clicked += async (s, e) =>
                {
                   // 重复的代码
                }

重构方案:

  1. 把重复逻辑提取成独立的异步方法,注意参数要兼容两个事件的委托类型(Unfocused事件的参数是FocusEventArgs,Clicked是EventArgs,因为FocusEventArgs继承自EventArgs,所以用EventArgs作为参数就能同时兼容两个事件):
private async void HandleSharedLogic(object sender, EventArgs e)
{
    // 这里放原来的重复代码
}
  1. 直接把这个方法绑定到两个事件上:
myEntry.Unfocused += HandleSharedLogic;
myButton.Clicked += HandleSharedLogic;

如果后续需要针对不同事件做细微调整,也可以在HandleSharedLogic里通过判断sender的类型或者e的类型来区分处理,依然不用写重复代码。

内容的提问来源于stack exchange,提问作者Costas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:52:43