导读:
委托是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
據我個人理解,可以解釋為:委托是一個可以調用其它方法、事件等的架子。
委託的的聲明類似於函數,但不帶函數體,且要使用delegate關鍵字。委托的聲明指定了一個函數名,其它包含一個返類型和參數列表。
下邊做一個簡單的例字,幫助大家理解。
class
Program

...
{

/**//// <summary> /// 1、定義委托
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns>
delegate double ProcessDelegate(double param1, double param2);

/**//// <summary> /// 得到乘積
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns>
static double Multiply(double param1, double param2)

...{
return param1 * param2;
}

/**//// <summary> /// 得到除數
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns>
static double Divide(double param1, double param2)

...{
return param1 / param2;
}
static void Main(string[] args)

...{
//2、聲明一下委托變量
ProcessDelegate process;
Console.WriteLine("Enter 2 number separated with a comma:");
string input = Console.ReadLine();
int commaPos = input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0,commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1));
Console.WriteLine("Enter M to multuply or D to divide:");
input = Console.ReadLine();
if (input=="M")

...{
//3、把一個函數引用賦給委托變量。
//注:須使用new 關鍵字創建一個新委托,在這個關鍵字後面,指定委託類型,提供一個函數,不帶括號
//此處將調用 Multiply()函數
process = new ProcessDelegate(Multiply);
}

else ...{
process = new ProcessDelegate(Divide);
}
//4、使用委托調用函數
Console.WriteLine("Result:{0}",process(param1,param2));
Console.ReadKey();
}
}
Scott CKT 著
本文转自
http://www.cnblogs.com/scottckt/archive/2007/09/14/893159.html
委托是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
據我個人理解,可以解釋為:委托是一個可以調用其它方法、事件等的架子。
委託的的聲明類似於函數,但不帶函數體,且要使用delegate關鍵字。委托的聲明指定了一個函數名,其它包含一個返類型和參數列表。
下邊做一個簡單的例字,幫助大家理解。





















































本文转自
http://www.cnblogs.com/scottckt/archive/2007/09/14/893159.html