无法为委托分配多个方法

时间:2018-03-15 16:51:16

标签: c#

我发现了一个可能的情况w.r.t. MultiCast代表,我无法解决。我无法为Main类中的Delegate对象分配多个方法。只有最后一个方法才能在委托中注册。在这种情况下,它是Subtract()方法。是否存在我不知道的限制?

static void Main(string[] args)
{
    Calculator calc = new Calculator();
    //Create a Delegate object
    CalcDelegate delObj, delObj2, delObj3, delObj4;
    CalcDelegate delObj5 = null;
    //Register methods with delegate objects
    delObj = new CalcDelegate(calc.Add);
    delObj2 = new CalcDelegate(calc.Subtract);
    delObj3 = (CalcDelegate)Delegate.Combine(delObj, delObj2);
    Console.WriteLine(delObj3.Method);

    delObj4 = delObj + delObj2;
    Console.WriteLine(delObj3(40, 20));
    Console.WriteLine(delObj4(40, 20));

    delObj5 += calc.Add;
    delObj5 += calc.Subtract;
    Console.WriteLine(delObj5(40, 20));
    Console.ReadKey();
}

这是我对Calculator类的实现以及委托:

public delegate int CalcDelegate(int a, int b);
public class Calculator
{
    public int Add(int x, int y)
    {
        return x + y;
    }

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

1 个答案:

答案 0 :(得分:0)

所有方法都已分配,委托从方法链中返回最后一个方法的结果,因为有多个结果,但委托只能返回一个值。将Console.WriteLine添加到AddSubtract,您会看到它们都被调用。