C#将一个方法作为参数传递给另一个方法

标签 c# methods

<分区>

我有一个异常发生时调用的方法:

public void ErrorDBConcurrency(DBConcurrencyException e)
{
    MessageBox.Show("You must refresh the datasource");
}

我想做的是将这个函数传递给一个方法,这样如果用户单击"is",那么该方法就会被调用,例如

public void ErrorDBConcurrency(DBConcurrencyException e, something Method)
{
    if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
        Method();
}

该方法可能有也可能没有参数,如果是这种情况我也想传递它们。

我怎样才能做到这一点?

最佳答案

您可以使用 Action委托(delegate)类型。

public void ErrorDBConcurrency(DBConcurrencyException e, Action method)
{
    if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
        method();
}

然后你可以像这样使用它:

void MyAction()
{

}

ErrorDBConcurrency(e, MyAction); 

如果您确实需要参数,您可以使用 lambda 表达式。

ErrorDBConcurrency(e, () => MyAction(1, 2, "Test")); 

关于C#将一个方法作为参数传递给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414515/

相关文章:

c# - 查看文件路径是否在目录内

c# - 具有多个条件的 switch 语句

java - 有没有一种方法可以使方法在内部方法中返回?

ruby - 如何在不调用函数的情况下引用它,因为 foo 与 foo() 相同,因此它已经被调用

c# - 查看EF4生成的查询?

C# - 如何获取基本泛型的具体类型

c# - 如何从另一个表和asp.net中的局部变量插入mysql中的数据

Java数组通过索引方法获取值

javascript - 获得未知数量的参数后,将它们传递给另一个函数

java - 当我传递一个空值时,Java 将运行哪个重载函数