我的委托类型不起作用“预期的方法名称”

时间:2017-03-04 16:07:12

标签: c# delegates

我试过了:

class Program
{
    public delegate int add(int x, int y);
    public class ff
    {
        public static int addNumbers(int x, int y)
        {
            return x + y;
        }

        public static int substractNumbers(int x, int y)
        {
            return x - y;
        }
        static void Main(string[] args)
        {
            Delegate delegare = new add(ff.addNumbers);
             Console.WriteLine(delegare(3,4));
        }
}

我不明白为什么我收到此错误“预期的方法名称”。 当我使用具有void函数的委托时,它可以工作。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:3)

delegare变量的类型仅为Delegate。这可以指任何委托。为了调用委托(以正常方式),您应该有一个适当类型的表达式。

修复命名约定并删除不必要的嵌套类 - 并演示方法组转换 - 您的代码如下所示:

using System;

public delegate int Int32Operation(int x, int y);

class Program
{
    public static int AddNumbers(int x, int y)
    {
        return x + y;
    }

    public static int SubtractNumbers(int x, int y)
    {
        return x - y;
    }

    static void Main(string[] args)
    {
        Int32Operation op = new Int32Operation(AddNumbers);
        Console.WriteLine(op(3, 4)); // Prints 7

        op = SubtractNumbers; // Method group conversion

        Console.WriteLine(op(3, 4)); // Prints -1
    }
}

答案 1 :(得分:0)

你应该尝试一下:

add delegare = new add(ff.addNumbers);

您委托的类型应为add,因为您已定义。