1.委托

  委托是一种类型,是方法的类型,委托定义了方法的类型;这样就能把方法作为参数进行传递。

代码
namespace First
{
//定义委托,它定义了可以代表方法的类型
public delegate void GreetingDelegate(string name);

public partial class Form1 : Form
{
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);
}

//此处函数的签名必须和委托GreetingDelegate(string name)一致
private void EnglishGreeting(string name)
{
MessageBox.Show(
"Morning, " + name);
}
private void ChineseGreeting(string name)
{
MessageBox.Show(
"早上好," + name);
}
}
}

运行结果:

陆续跳出两个对话框

委托和委托链委托和委托链

 2.委托链

  将多个方法捆绑到同一个委托对象上,形成委托链,当调用这个委托对象时,将依次调用委托链中的方法。

代码
//定义委托,它定义了可以代表方法的类型
public delegate void GreetingDelegate(string name);

public partial class Form1 : Form
{
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);
GreetingDelegate delegate1 = new GreetingDelegate(EnglishGreeting);
//delegate1 = ChineseGreeting;
delegate1 += ChineseGreeting;
//delegate1 += EnglishGreeting;
delegate1("KIMI");
}

//此处函数的签名必须和委托GreetingDelegate(string name)一致
private void EnglishGreeting(string name)
{
MessageBox.Show(
"Morning, " + name);
}
private void ChineseGreeting(string name)
{
MessageBox.Show(
"早上好," + name);
}
}

运行结果:

  依次弹出两个对话框

委托和委托链委托和委托链

相关文章:

  • 2021-07-04
  • 2021-10-25
  • 2021-11-02
  • 2022-12-23
  • 2021-09-18
  • 2021-12-18
  • 2021-06-08
  • 2022-02-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
  • 2021-10-23
  • 2021-12-02
  • 2022-12-23
  • 2021-11-03
相关资源
相似解决方案