C#如何将函数作为参数传递?

时间:2015-07-09 23:43:58

标签: c# function methods scripting terminology

我一直在寻找一段时间来完成这项工作。 例如:

CheckPerformance(***Loop***);    

    private void CheckPerformance(***Function myFunctionName***)
    {
        sw.Start();
        myFunctionName(200);
        sw.Stop();
        Console.WriteLine("Elapsed in check: {0}", sw.Elapsed);
    }

    private void Loop(int n)
    {
        for (int i = 0; i < n; i++)
        {
            int number = i; 
        }
    }

我如何能够将 Loop 作为参数传递给动态将函数放入 CheckPerformance() 这样的秒表分析器?即使你给我这个类型的名字,我也可以查一查。

谢谢!

1 个答案:

答案 0 :(得分:2)

您正在传递类型为void (int)的函数,该函数在C#中为:

Action<int>

所以,将您的***Function myFunctionName***替换为Action<int> myFunctionName,您应该做得很好。 Action类型从0到几个通用参数,对应于参数的类型。

如果您的函数返回void以外的其他内容,则可以使用Func<...>泛型类型。最后一个通用参数是返回类型。