C# · 委托语句简化演变
1.委托基础语句形式
namespace QLVision { delegate void dHelp();//定义委托 static class Program { ////// 应用程序的主入口点。 /// [STAThread] static void Main() { dHelp h;//委托实例 h = SaySometing;//实例赋值 h();//委托调用 void SaySometing() { MessageBox.Show("Hello"); } } } }
2.委托的作用
委托用于存放行为,行为由调用者决定。
namespace QLVision { delegate void dHelp();//定义委托 static class Program { ////// 应用程序的主入口点。 /// [STAThread] static void Main() { void Talk(dHelp help)//传参为委托 { help();//方法内执行委托方法 } void SayHello() { MessageBox.Show("Hello"); } void SayBye() { MessageBox.Show("Bye"); } Talk(SayHello);//方法调用 Talk(SayBye);//方法调用 } } }
3.委托的分类
与方法名和方法体无关,只按返回类型,参数类型,参数个数分类。
4.委托的简化
泛型委托:
Action :无返回值;链接:Action 委托 (System) | Microsoft Docs
Func :有返回值;链接:Func
namespace QLVision { static class Program { ////// 应用程序的主入口点。 /// [STAThread] static void Main() { void Talk(Action help)//传参为委托 { help();//执行委托方法 } Talk(SayHello);//调用方法 void SayHello() { MessageBox.Show("Hello"); } } } }
使用Lambda表达式:
namespace QLVision { static class Program { ////// 应用程序的主入口点。 /// [STAThread] static void Main() { void Talk(Action help)//传参为委托 { help();//执行委托方法 } Talk(() => MessageBox.Show("Hello"));//Lamda表达式 } } }
参考链接:之所以你没有使用委托是因为你还不够了解它.._哔哩哔哩_bilibili