以下是有關委派的一些稍稍複雜的用法舉例:
6. 使用委派陣列
namespace ObjFunDelegate
{
delegate double CompuFun(double parama, double paramb);
class Program
{
static void Main(string[] args)
{
// 宣告委派陣列
CompuFun[] computefun = new CompuFun[2];
// 為陣列中的多個物件分別掛載不同的方法
computefun[0] = new CompuFun(DeleMathFuns.AddFun);
computefun[1] = new CompuFun(DeleMathFuns.MultiplyFun);
// 透過下標分別呼叫不同委派物件中的不同方法
for (int i = 0; i < 2; i++)
{
Console.WriteLine("呼叫方法[{0}]:", i);
Console.WriteLine("所得結果:{0}", computefun[i](5, 5));
}
Console.ReadLine();
}
}
class DeleMathFuns
{
public static double AddFun(double a, double b)
{
return a + b;
}
public static double MultiplyFun(double a, double b)
{
return a * b;
}
}
}
如果說透過最初的幾段程式碼還不能論證我先前的觀點的話,相信這段程式碼便可以將委派的物件性質以及方法性質兼備的特性淋漓盡致的表現出來:委派物件中掛載的方法我們可以隨時隨地方便的呼叫,同時我們又可以按照普通陣列的管理方法來管理這多個委派物件。使我們的程式有條不紊的執行。
不過在 C# 中,多個方法可不一定非得要對應多個委派物件呢。呵呵……