委托简单的说就是:执行相似的任务,根据参数,执行不同的方法,传统的做法太过冗余;通过定义委托将方法变相变成参数传进函数。
参考文章:
//个人练习的代码
Main(){
DelegateTest task = new DelegateTest();
task.Run();
task.delegate1 = task.EnglishGreeting;
task.MakeGreeting3("xiangsheng yu");
}
public class DelegateTest
{
public void Run()
{
//传统处理方式
MakeGreeting("John");
//委托 理解:一批类似的动作,需要执行不同的方法,委托将不同方法名当作参数放进总函数
MakeGreeting2("俞祥胜", ChineseGreeting);
//委托 用法二 在执行前赋值委托对象,告知要执行的方法名称
MakeGreeting3("");
}
public void MakeGreeting(string name,string language="English")
{
//使用if、swith等判断参数执行不同的方法
Console.WriteLine("传统执行方式:判断执行不同方法");
EnglishGreeting(name);
}
public delegate void GreetingDelegate(string name);
public void MakeGreeting2(string name, GreetingDelegate doGreeting)
{
Console.WriteLine("委托处理方式:定义委托,将方法名当作参数进行传递");
doGreeting(name);
}
public GreetingDelegate delegate1;
public void MakeGreeting3(string name)
{
if (delegate1!=null)
delegate1(name);
}
public void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
public void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
}
转载请注明原文地址: https://ju.6miu.com/read-1124427.html