Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用操作C将一个函数调用到另一个函数中_C# - Fatal编程技术网

C# 使用操作C将一个函数调用到另一个函数中

C# 使用操作C将一个函数调用到另一个函数中,c#,C#,我有一个带参数的函数,我想使用Action将其作为参数调用到另一个函数中。代码如下: public void msg(string name) { MessageBox.Show("Hello " + name); } public void CallMethod(Action<object> Function) { Function(); } 我不想像这样发送方法函数中的参数: publ

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

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

    public void CallMethod(Action<object> Function)
    {

        Function();

    }
我不想像这样发送方法函数中的参数:

    public void CallMethod(Action<object> Function)
    {

        Function("John");

    }

有任何帮助吗?

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

public void CallMethod<T>(Action<T> Function, T parameter)
{
    ...
    Function(parameter);
    ...
}
另一种可能是使用lambda传递委托:

public void CallMethod(Action action)
{
    ...
    action();
    ...
}
用法:

 CallMethod(() => msg("John"));

当您执行CallMethodMsgjon时,您正在将调用Msgjon的结果传递到CallMethod方法中。msgJhon的结果无效-即无。所以这没有意义。问题…你为什么想要/需要这样做?如果我们理解尝试创建此CallMethod方法的总体目的,那么我们可能会建议一种实现它的好方法。目前它似乎没有任何用处,因为您可以直接调用同一个方法。CallMethod的用途是什么?如果不想硬编码Jhon,那么您需要参数,但为什么不直接调用msgJhon呢?例如,我想为所有函数创建一个带有Try-Catch的函数,并将函数名传递给它。
public void CallMethod(Action action)
{
    ...
    action();
    ...
}
 CallMethod(() => msg("John"));