上篇文章介绍了委托的基本概念和委托的基本使用步骤,现在回顾一下上篇文章总结的知识点,使用委托时,我们第一步应该创建委托类,第二步是用上一步创建的委托类声明一个委托变量,让后再将我们创建方法的引用传给委托变量,第三步就是执行委托方法了。
总结了委托的使用步骤,那么我们常常以什么形式使用委托那?一个是委托以参数的方式使用,一个是委托以返回值的方式使用。下面我总结一下这两个知识点。
一、委托以参数的方式使用
//1、 声明委托类(必须指定返回值类型和方法参数列表)
public delegate void DGSing();
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SingTest(Sing,Sing1,Sing2);//调用SingTest方法,将委托参数传入进去
}
#region 委托当参数用
public void SingTest(DGSing dg,DGSing dg1,DGSing dg2)
{
dg += dg1;//给dg委托变量追加方法引用1
dg += dg2;//给dg委托变量追加方法引用2
dg(); //调用委托
}
void Sing()
{
MessageBox.Show("唱一首《真的爱你》");
}
void Sing1()
{
MessageBox.Show("唱一首《海阔天空》");
}
void Sing2()
{
MessageBox.Show("唱一首《光辉岁月》");
}
#endregion
效果图如下
二、委托当返回值使用
//1、 声明委托类(必须指定返回值类型和方法参数列表)
public delegate void DGSing();
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
DGSing dg=SingTest("Sing");
dg += SingTest("Sing1");
dg += SingTest("Sing2");
dg();
}
#region 委托当返回值
void Sing()
{
MessageBox.Show("唱一首《真的爱你》");
}
void Sing1()
{
MessageBox.Show("唱一首《光辉岁月》");
}
void Sing2()
{
MessageBox.Show("唱一首《海阔天空》");
}
public DGSing SingTest(string type)//将委托当做返回值使用
{
switch (type)
{
case "Sing":
return Sing;
case "Sing1":
return Sing1;
default:
return Sing2;
}
}
#endregion
效果图和委托当参数的效果图一样。
三、小结
这次的总结了上篇文章委托的使用步骤,又总结了使用委托的两种方式——委托当做参数使用、委托当做返回值使用。委托的使用方式大概就能抽象这两种方式,我们先以简单的小例子将其使用原理搞明白了,然后在慢慢的去研究哪些“深奥的代码”,这样顺藤摸瓜,问题就变得简单了......