C# 委派的基本操作
剛才找到一篇C# 委派的基本操作,覺得很實用趕緊備份,歡迎有興趣的同好,一起來C/P一下。
資料來源:http://www.dotblogs.com.tw/atowngit/archive/2009/12/07/12311.aspx
(類似C++的函數指標)
class Program { //step1:宣告委派型別。 public delegate void MyDelegate(string name); static void Main(string[] args) { //step2:實體化委派型別並指向相對應方法。 // MyDelegate 委派,為沒有傳回值, // 並且傳入參數為一個字串型別。 MyDelegate oMyDel = new MyDelegate(Show); //.net 2.0 之後可以簡化。 MyDelegate oYourDel = Show; //將方法加入委派物件的執行方法清單中 oYourDel += new MyDelegate(Show2); //step3 : 使用 Invoke 方法叫用委派。 oMyDel.Invoke("MyHello!"); oYourDel.Invoke("YourHello!"); //也可簡化。 oMyDel("MyHello!"); oYourDel("YourHello!"); Console.ReadKey(); } public static void Show(string value) { Console.WriteLine("Show : {0}",value); } public static void Show2(string value) { Console.WriteLine("Show2 : {0}",value); } }
|
(多重傳送委派)
public delegate void Del(); private static void Show() { Console.WriteLine("第一個呼叫"); } private static void Show2() { Console.WriteLine("第二個呼叫"); } private static void Show3() { Console.WriteLine("第三個呼叫"); } static void Main(string[] args) { Del oMyDel = Show; oMyDel = oMyDel + Show2; oMyDel += Show3; oMyDel.Invoke(); Console.ReadKey(); }
|
(實現 CallBack)
//宣告委派型別 public delegate string MyDel(); class A { private string _name = "我�� A"; //建立與委派型別對應的方法 public string showInfo() { return this._name; } public A() { //建立委派驅動 DelDriver dirver = new DelDriver(); //建立委派實例並且指定方法 MyDel d1 = showInfo; //呼叫驅動方法並且傳入委派物件 dirver.delDirver(d1); } } class B { private string _name = "我�� B"; //建立與委派型別對應的方法 public string showInfo() { return this._name; } public B() { DelDriver dirver = new DelDriver(); MyDel d1 = showInfo; dirver.delDirver(d1); } } class DelDriver { public void delDirver(MyDel del) { Console.WriteLine(del.Invoke()); } } class Program { static void Main(string[] args) { A a = new A(); B b = new B(); Console.ReadKey(); } }
|
沒有留言:
張貼留言