使用Action C#调用另一个函数

Bor*_*kan 0 c#

我有一个带有参数的函数,我想使用Action将它作为参数调用到另一个函数中。这是代码:

    public void msg(string name)
    {
        MessageBox.Show("Hello " + name);
    }

    public void CallMethod(Action<object> Function)
    {

        Function();

    }
Run Code Online (Sandbox Code Playgroud)

Method使用msg参数调用函数时,它给我一个错误:

    private void Form1_Load(object sender, EventArgs e)
    {
        CallMethod(msg("John"));
    }
Run Code Online (Sandbox Code Playgroud)

我不想像这样在Method函数中发送参数:

    public void CallMethod(Action<object> Function)
    {

        Function("John");

    }
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

Sin*_*atr 7

您可以使用参数创建通用方法:

public void CallMethod<T>(Action<T> Function, T parameter)
{
    ...
    Function(parameter);
    ...
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

CallMethod(msg, "John");
Run Code Online (Sandbox Code Playgroud)

另一种可能性是使用lambda传递委托:

public void CallMethod(Action action)
{
    ...
    action();
    ...
}
Run Code Online (Sandbox Code Playgroud)

用法:

 CallMethod(() => msg("John"));
Run Code Online (Sandbox Code Playgroud)