委托可以将方法作为参数传递,同时委托也可以自己作为参数传递
委托可分为自定义委托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);
}