程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 委托 -- C#入門經典(第3版)

委托 -- C#入門經典(第3版)

編輯:.NET實例教程

委托是一種可以把引用存儲為函數的類型。這聽起來相當棘手,但其機制是非常簡單的。委托最重要的用途在本書介紹到事件和事件處理時才能解釋清楚,但這裡也將介紹有關委托的許多內容。在本書的後面使用它們時,這些內容有助於理解一些比較復雜的問題。

委托的聲明非常類似於函數,但不帶函數體,且要使用delegate關鍵字。委托的聲明指定了一個函數簽名,其中包含一個返回類型和參數列表。在定義了委托後,就可以聲明該委托類型的變量。接著把這個變量初始化為與委托有相同簽名的函數引用。之後,就可以使用委托變量調用這個函數,就像該變量是一個函數一樣。

有了引用函數的變量後,還可以執行不能用其他方式完成的操作。例如,可以把委托變量作為參數傳遞給一個函數,這樣,該函數就可以使用委托調用它引用的任何函數,而且在運行之前無需知道調用的是哪個函數。

下面的示例使用委托訪問兩個函數中的一個。

試試看:使用委托來調用函數

(1) 在目錄C:\BegVCSharp\Chapter6下創建一個新控制台應用程序Ch06Ex05。

(2) 把下述代碼添加到Program.cs中:

class Program

{

delegate double ProcessDelegate(double param1, double param2);

static double Multiply(double param1, double param2)

{

return param1 * param2;

}

static double Divide(double param1, double param2)

{

return param1 / param2;

}

 

static void Main(string[] args)

{

ProcessDelegate process;

Console.WriteLine("Enter 2 numbers 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 multiply or D to divide:");

input = Console.ReadLine();

if (input == "M")

process = new processDelegate(Multiply);

else

process = new processDelegate(Divide);

Console.WriteLine("Result: {0}", process(param1, param2));

Console.ReadKey();

}

}

(3) 執行代碼,結果如圖6-10所示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved