0
我做了一個簡單的委託範例來試圖理解委託。下面是代碼:委託方法屬性
namespace DelegateExample
{
public delegate int BinaryOp(int x, int y);
public class SimpleMath
{
public static int Add(int x, int y) { return x + y; }
public static int Subtract(int x, int y) { return x - y; }
public static int Multiply(int x, int y) { return x * y; }
public static int Divide(int x, int y) { return x/y; }
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("*******Simple Delegate Example************");
BinaryOp d = new BinaryOp(SimpleMath.Multiply);
d += SimpleMath.Divide;
d += SimpleMath.Add;
Display(d);
Console.ReadLine();
}
public static void Display(Delegate dobj)
{
foreach (BinaryOp del in dobj.GetInvocationList())
{
int ans = del.Invoke(10, 10);
Console.WriteLine(ans);
Console.WriteLine("Method Name: {0}", dobj.Method);
}
Console.WriteLine("+++++++++++++++++++++++++++++++++++");
}
}
}
,這裏是輸出:
*******Simple Delegate Example*********
100
Method Name: Int32 Add(Int32, Int32)
1
Method Name: Int32 Add(Int32, Int32)
20
Method Name: Int32 Add(Int32, Int32)
+++++++++++++++++++++++++++++++++++
我的問題: 在輸出時,爲什麼物業。方法在每種情況下返回相同的名稱(「添加」 ),但返回的實際結果是調用Multiply,Divide然後Add?