初始化C#委托的"正确"方法是什么?

Vin*_*eJS 8 .net c# delegates initialization

C#代表一直很难掌握,所以我很高兴偶然发现了逻辑学家关于代码项目网站上标题为"C#代表:一步一步"的文章.他有一种非常简洁的方式来解释C#代表,我可以推荐给你.但是,在尝试示例时,我发现有两种方法可以初始化委托,主要是:

    //create a new instance of the delegate class
    CalculationHandler sumHandler1 = new CalculationHandler(math.Sum);
    //invoke the delegate
    int result = sumHandler1(8, 9);
    Console.WriteLine("Result 1 is: " + result);
Run Code Online (Sandbox Code Playgroud)

    CalculationHandler sumHandler2 = math.Sum;
    //invoke the delegate
    int result = sumHandler2(8, 9);
    Console.WriteLine("Result 2 is: " + result);
Run Code Online (Sandbox Code Playgroud)

将数学类定义为

public class math
{
    public int Sum(int x, int y)
    {
        return x + y;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么"正确"的方式是什么?为什么?

Bri*_*sen 9

它们都是正确的,但方法组转换,这是第二个选项在2.0(IIRC)中添加.即如果您使用旧版本的编译器,则需要使用第一个选项.否则,额外的打字真的是多余的.