以下是有關委托的一些稍稍復雜的用法舉例:
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#中,多個方法可不一定非得要對應多個委托對象呢。呵呵……