我有一个带有参数的函数,我想使用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)
有什么帮助吗?
您可以使用参数创建通用方法:
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)