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