c# 将方法作为参数传递给方法

标签 c# methods

我有一个循环方法,它在我的代码中出现了很多次,它基本上是检查以确保与 odbc 的连接正常,然后连接,但每次调用此方法时,它都会调用另一个方法,并且 main 的每个实例这个方法不同,因为每个方法大约有 8 行代码,在代码中出现 8 次并不理想。

所以基本上我只想有一个方法,我可以调用它来传递新方法的名称作为参数。

基本上是这样的:

private void doSomething(methodToBeCalled) { 如果(某事是真的) { 方法ToBeCalled(someArgument) } }

这可能吗?

提前致谢

最佳答案

如前所述,您可以为此使用委托(delegate):

// as in the original post:
private void doSomething(Action methodToBeCalled)
{
    if (somethingIsTrue)
    {
        methodToBeCalled();
    }
}

对于没有任何参数的方法,这个方法被称为例如如下:

private void someMethod()
{
    // ...
}

doSomething(someMethod);

如果你想调用一个带参数的方法,你可以在它周围包装一个 lambda 函数:

private void someMethodWithArgument(int arg)
{
    // ...
}

doSomething( () => someMethodWithArgument(42) );

当然,如果要调用的方法总是采用相同类型的参数,则可以声明 doSomething方法,以便它接受 Action<T>/Action<T,T>/等参数代替。如果您希望被调用的方法返回一个值,请使用 Func<T> 中的委托(delegate)家庭代替。

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

相关文章:

c# - Entity Framework 6 中的 Fluent Api 不兼容 Entity Framework Core

c# - 带where条件的mvc 5 asp.net selectlist

java - java 是否有内置的 elementAt(stack s, int index) 方法?

c# - 如何创建一个通用包装方法来返回包装方法的结果(如果有)?

java - 关于 Java 中的对象/类实例

类实现接口(interface)时 typescript 不正确的类型推断

C#:抽象类需要实现接口(interface)?

c# - 如何以编程方式 self 删除? (C# WinMobile)

c# - 具有合并单元格的 GridView

python - 为什么我不能将可选参数默认为成员变量?