委托市一中特殊的对象类型,它定义了方法的类型,使得可以方法当作另一个方法的参数进行传递,其特殊指出在于,我们以前定义的所有对象都包含数据,而委托包含的只是方法的地址,下面是代码:
class Program
{
static void Main(string[] args)
{
DelegateTest test = new DelegateTest();
// 特别注意:传递的为事件的地址指针
test.Dowork("唐雷", test.sayChinese);
test.Dowork("tl", test.sayChinese);
Console.ReadKey();
//下面为多播的演示 特别注意:传递的为事件的地址指针
ConsoleApplication1.DelegateTest.saySomething saytest = test.sayEnglish;
saytest += test.sayChinese;
test.Dowork("唐雷", saytest);
}
}
class DelegateTest
{
/// <summary>
/// 定义一个委托,名为saySomething
/// </summary>
/// <param name="name">名称</param>
public delegate void saySomething(string name);
/// <summary>
/// 通过传递的方法名来执行不同的委托事件
/// </summary>
/// <param name="name">名称</param>
/// <param name="MakeSay">委托类型的变量(注意:地址指针)</param>
public void Dowork(string name, saySomething MakeSay)
{
MakeSay(name);
}
/// <summary>
/// 说英语
/// </summary>
/// <param name="name"></param>
public void sayEnglish(string name)
{
Console.WriteLine("hello,"+name);
}
/// <summary>
/// 说中文
/// </summary>
/// <param name="name"></param>
public void sayChinese(string name)
{
Console.WriteLine("你好," + name);
}
}
运行后的结果: