gpt4 book ai didi

c# - 将具有多个参数的函数作为参数传递

转载 作者:行者123 更新时间:2023-11-30 14:00:29 27 4
gpt4 key购买 nike

我有这段代码,它接受一个没有参数的函数,并返回它的运行时。

public static Stopwatch With_StopWatch(Action action)
{
var stopwatch = Stopwatch.StartNew();
action();
stopwatch.Stop();
return stopwatch;
}

我想将其转换为带参数的非 void 函数。我听说过 Func<> 委托(delegate),但我不知道如何使用它。我需要这样的东西(非常伪):

   public T measureThis(ref Stopwatch sw, TheFunctionToMeasure(parameterA,parameterB))
{
sw.Start(); // start stopwatch
T returnVal = TheFunctionToMeasure(A,B); // call the func with the parameters
stopwatch.Stop(); // stop sw
return returnVal; // return my func's return val
}

所以我必须获取传递的函数的返回值,最后获取秒表。非常感谢任何帮助!

最佳答案

您的原始代码仍然可以工作。当你有参数时,人们如何调用它会发生什么变化:

With_Stopwatch(MethodWithoutParameter);
With_Stopwatch(() => MethodWithParameters(param1, param2));

您还可以使用第二种语法调用带参数的方法:

With_Stopwatch(() => MethodWithoutParameter());
With_Stopwatch(() => MethodWithParameters(param1, param2));

更新:如果你想要返回值,你可以改变你的measureThis采取Func<T>的功能而不是一个 Action :

public T measureThis<T>(Stopwatch sw, Func<T> funcToMeasure)
{
sw.Start();
T returnVal = funcToMeasure();
sw.Stop();
return returnVal;
}

Stopwatch sw = new Stopwatch();
int result = measureThis(sw, () => FunctionWithoutParameters());
Console.WriteLine("Elapsed: {0}, result: {1}", sw.Elapsed, result);
double result2 = meashreThis(sw, () => FuncWithParams(11, 22));
Console.WriteLine("Elapsed: {0}, result: {1}", sw.Elapsed, result);

关于c# - 将具有多个参数的函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645225/

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