查找传递方法组作为参数

Looking for pass method group as parameter

提问人:MunciakAjak 提问时间:9/3/2022 更新时间:9/5/2022 访问量:64

问:

我在按钮上有太多完全相同的代码,区别在于我使用不同的方法组。我想为所有按钮做一个函数,使代码更加简化和可读。感谢您的任何想法和帮助。以下是我的看法:

private void Button1_Click()
    {
        //code
        Method1(string);
    }
    private void Button2_Click()
    {
        //exactly same code but using different method
        Method2(string);
    }

    private void MyFunctionAsParamForAllButtons(Method method)
    {
        //same code
        method();
    }
Button1_Click => MyFunctionAsParamForAllButtons(Method1(string);
Button2_Click => MyFunctionAsParamForAllButtons(Method2(string);
C# 方法 委托 参数传递

评论

1赞 Wouter 9/3/2022
只需将相同的处理程序链接到不同的按钮即可。(取决于您的框架使用命令)。
0赞 9/3/2022
保留两个按钮单击处理程序。不要将方法传递给 。如果 Method1/Method2 需要 MyFunctionAsParamForAllButtons 中的代码生成的值,请让 MyFunctionAsParamForAllButtons 返回该值,然后在按钮单击处理程序中将其传递给 Method1/Method。例如MyFunctionAsParamForAllButtonsprivate void Button1_Click() { string s = StuffExecutedByAllButtons(); Method1(s); }
0赞 Poul Bak 9/3/2022
将“相同的代码”提取到方法中。然后,您只需要调用该方法和您的其他方法。

答:

0赞 MunciakAjak 9/5/2022 #1

有许多函数可以将 func 传递给参数,但我使用了 Action 操作,它看起来像这样:

private void MyFunctionAsParamForAllButtons(Action <string> action)
{
    //code
    action(string);
}

Button1_Click => MyFunctionAsParamForAllButtons(FuncName);