委托,把方法作为参数传递,而方法的类型,就是委托。
public partial class Form1 : Form
{
public delegate void GreetingDelegate(string name);
public Form1()
{
InitializeComponent();
}
private void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name); //此句的意思是将name传递给方法MakeGreeting
}
private void Form1_Load(object sender, EventArgs e)
{
//将方法EnglishGreeting作为一个参数传递
//对应到GreetPeople中,是将"KIMI"传递给了EnglishGreeting
GreetPeople("KIMI", EnglishGreeting);
//将方法ChineseGreeting作为一个参数传递
//对应到GreetPeople中,是将"莱科宁"传递给了ChineseGreeting
GreetPeople("莱科宁", ChineseGreeting);
}
private void EnglishGreeting(string name)
{
MessageBox.Show("Morning, " + name);
}
private void ChineseGreeting(string name)
{
MessageBox.Show("早上好," + name);
}
}
委托链,一个委托上,可以加上多个处理事件:
public partial class Form1 : Form
{
public delegate void GreetingDelegate(string name);
public Form1()
{
InitializeComponent();
}
private void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name); //此句的意思是将name传递给方法MakeGreeting
}
private void Form1_Load(object sender, EventArgs e)
{
GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);
delegate1 += ChineseGreeting;
delegate1 += EnglishGreeting;
delegate1 += ChineseGreeting;
delegate1("KIMI");
}
private void EnglishGreeting(string name)
{
MessageBox.Show("Morning, " + name);
}
private void ChineseGreeting(string name)
{
MessageBox.Show("早上好," + name);
}
}