C#委托创建和激活

aha*_*ron 1 c# delegates

我有两个功能:

double fullFingerPrinting(string location1, string location2, int nGrams)
double AllSubstrings(string location1, string location2, int nGrams)
Run Code Online (Sandbox Code Playgroud)

我想进入循环并依次激活每个函数,并且在每个函数之后我还要打印函数的名称,我该怎么做?

Chr*_*ich 5

  1. 定义函数通用的委托类型.
  2. 为您的函数创建一个委托集合
  3. 遍历集合,调用每个委托并使用Delegate.Method属性获取方法名称.

示例(编辑以显示非静态函数委托):

class Program
{
    delegate double CommonDelegate(string location1, string location2, int nGrams);

    static void Main(string[] args)
    {
        SomeClass foo = new SomeClass();

        var functions = new CommonDelegate[]
        {
            AllSubstrings,
            FullFingerPrinting,
            foo.OtherMethod
        };

        foreach (var function in functions)
        {
            Console.WriteLine("{0} returned {1}",
                function.Method.Name,
                function("foo", "bar", 42)
            );
        }
    }

    static double AllSubstrings(string location1, string location2, int nGrams)
    {
        // ...
        return 1.0;
    }

    static double FullFingerPrinting(string location1, string location2, int nGrams)
    {
        // ...
        return 2.0;
    }
}

class SomeClass
{
    public double OtherMethod(string location1, string location2, int nGrams)
    {
        // ...
        return 3.0;
    }
}
Run Code Online (Sandbox Code Playgroud)