gpt4 book ai didi

c# - 以代码为参数的函数

转载 作者:行者123 更新时间:2023-11-30 15:01:20 24 4
gpt4 key购买 nike

我有很多函数,但我确实需要在另一个函数中运行它们。

我知道我可以做这样的事情

public void Method1()
{
bla bla
}


public void Method2()
{
bla bla
}

public void Wrapper(Action<string> myMethod)
{
method{
myMethod()
}
bla bla
}

然后用这样的方式调用它们:

wrapper(Method1());

问题是有时我需要同时运行方法 1 和方法 2。他们很多。有时一个,有时同时几个。

所以我认为做这样的事情会很棒:

Wrapper({bla bla bla; method(); bla bla; }
{
method{
bla bla bla;
method();
bla bla;

}
}

在方法内部运行一个代码块,方法的参数就是代码块。您认为这可能吗?或者您会推荐另一种方法吗?

最佳答案

拥有

public static void Wrapper(Action<string> myMethod)
{
//...
}

您可以指定 myMethod使用 lambda expression :

static void Main(string[] args)
{
Wrapper((s) =>
{
//actually whatever here
int a;
bool b;
//..
Method1();
Method2();
//and so on
});
}

也就是说,您不需要显式定义具有所需签名的方法(此处匹配 Action<string> ),但您可以编写内联 lambda 表达式,做任何您需要的事情。

来自 MSDN:

By using lambda expressions, you can write local functions that can be passed as arguments or returned as the value of function calls.

关于c# - 以代码为参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com