namespace C14_1
{
///
///定義委派,可以代表的方法的類型
///
///EnglishGreeting或者ChineseGreeting
public delegate void DoGreeting(string name);
public class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Hello, "+ name);
}
private static void ChineseGreeting(string name)
{
Console.WriteLine("你好,"+ name);
}
///
///他接收一個DoGreeting 型別的方法做為參數
///
///World 名稱
///委派(EnglishGreeting 或者 ChineseGreeting)
private static void GreetHello(string name, DoGreeting MakeGreeting)
{
MakeGreeting(name);
}
public static void Main()
{
GreetHello("Jim", EnglishGreeting);
GreetHello("小王", ChineseGreeting);
DoGreeting eng, chi;
eng = EnglishGreeting;
chi = ChineseGreeting;
GreetHello("AAA",eng);
GreetHello("小小",chi);
DoGreeting d;
//先給委派型別的變數繫結一個方法
d = EnglishGreeting;
//給委派變數在繫結一個方法
d += ChineseGreeting;
//將先後叫用 EnglishGreetin 與 ChineseGreeting 方法
GreetHello("小小王",d);
d("286王");
DoGreeting d1 = new DoGreeting(EnglishGreeting);
//給此委派變數在繫結一個方法
d1 += ChineseGreeting;
d1("老王");
DoGreeting d2 = new DoGreeting(EnglishGreeting);
d2 += ChineseGreeting;
GreetHello("JimD2",d2);
Console.WriteLine("--------------------------");
//取消EnglishGreeting方法的繫結
d2 -= EnglishGreeting;
//將僅用ChineseGreeting方法
GreetHello("小小明D2",d2);
}
}
}
沒有留言:
張貼留言