刚开始学代码的时候,从来没有想过怎么去优化代码,觉得能实现功能就可以了。工作了几年,还是这样的一个想法,后来慢慢系统去学习,发现很你想更上一层楼,你必须要有一些设计模式去编写代码。今天学到的委托算是一种设计思想吧!
委托:委托是代替对象调用其方法,是一种类型,类。
委托的作用:逻辑解耦。
例子(百度看见的一个例子):A喜欢B,想对B表白,但是怂,不敢去,所以拜托C去跟B表白。
堆代码时刻到了:
namespace ConsoleApplication1
{
public class Users
{
public delegate void Entrustmethod(); //委托
public void Get0()
{
Console.WriteLine("Get0");
}
public void Get01() {
Console.WriteLine("Get01");
}
public void Get02() {
Console.WriteLine("Get02");
}
public int Get()
{
return 1;
}
public int Get1()
{
return 1;
}
public int Get2()
{
return 2;
}
public int Get3(string name)
{
return 3;
}
public string Get4(string name)
{
return "4";
}
public void Get5(string name)
{
Console.WriteLine("Get5");
}
}
static void Main(string[] args)
{
ConsoleApplication1.Users.Entrustmethod methods = new ConsoleApplication1.Users.Entrustmethod(new Users().Get0);
methods.Invoke();
}
运行结果:
注:上述的Dome是无参数无返回值的委托。
运行结果:
注:委托的调用要与方法的参数,返回值一致。
多播委托:任何委托都是多播委托的子类。多播委托通过+=去增加方法,形成方法链,依次往下执行
通过-=去移除方法,形成方法链,从下往上依次执行,从第一个进行匹配,直到完全匹配成功才移除方法,如果匹配不成功,也毫无影 响。
堆代码的时刻:
运行结果
后来随着.netFromworke升级 委托出现框架预定义 Action 和Fun
Action:无返回值的委托。系统默认给16个参数。
Fun:有返回值的委托。系统默认给16个参数。
堆代码:
运行结果: