委托总结
在程序过程中,当程序正在处理某个事件的时候,我需要另外的程序代码去辅助处理一些事情,
于是委托另一个程序模块去处理,而委托就可以达到这种目的,我可以利用委托通知另外的程序模块,
该去调用哪个函数方法。委托其实就起到了这样一个作用,
将函数签名传递到了另一个函数中。或许这样讲还是有些模糊,
举个例子就是说,我每天都要说 Good Morning,现在我不想说了。但是必须说,
于是我就用复读机把话录起来,我说名字,复读机说good morning 这就是委托。
using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate
{
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的方法作为参数
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
static void Main(string[] args)
{
GreetPeople("jun", EnglishGreeting);
GreetPeople("黑马", ChineseGreeting);
Console.ReadKey();
}
}
}
输出如下:
Morning, jun
早上好, 黑马
我们对委托做一个总结:
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,
这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。