2013年12月21日 星期六

C# 委派的基本操作

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();
}
}


 


 


沒有留言:

張貼留言