我发现了一个可能的情况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;
}
}
答案 0 :(得分:0)
所有方法都已分配,委托从方法链中返回最后一个方法的结果,因为有多个结果,但委托只能返回一个值。将Console.WriteLine
添加到Add
和Subtract
,您会看到它们都被调用。