委托可以將方法作為參數傳遞,同時委托也可以自己作為參數傳遞
委托可分為自定義委托delegate? ? 無返回值的Action 與有返回值的Func委托
也有匿名委托與Lamada?
委托支持多播是事件的基礎 用處如在分線程調用主線程的UI invoke
?public delegate string Say(string name);
? public string SayHellow(string name)
? ? ? ? {
? ? ? ? ? ? return "hallow" + name;
? ? ? ? }
? ? ? ? public string SayHellow2(string name)
? ? ? ? {
? ? ? ? ? ? return "hallow" + name;
? ? ? ? }
? ? ? ? public string SayHellow3(string name, Say say)
? ? ? ? {
? ? ? ? ? ? return say(name);
? ? ? ? }
? ? ? ? public string SayHellow4(string name, Func<string, string> func)
? ? ? ? {
? ? ? ? ? ? return func(name);
? ? ? ? }
? ? ? ? private void button2_Click(object sender, EventArgs e)
? ? ? ? {
? ? ? ? ? ? Say say = new Say(SayHellow);
? ? ? ? ? ? Say say1 = new Say(SayHellow2);
? ? ? ? ? ? say("lis");
? ? ? ? ? ? say1("lis");
? ? ? ? ? ? SayHellow3("lis", SayHellow2);
? ? ? ? ? ? SayHellow4("lis", SayHellow2);
? ? ? ? ? ? SayHellow4("小明", name=> "gaga" + name);
? ? ? ? }