委托理解之示例

    xiaoxiao2021-03-25  124

    上篇博文的定时器中我用到了委托,现在将委托相关的理解补上来。

    首先呢,要知道什么是委托?

    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

    委托的作用是:引用被委托的方法。

    二、委托示例

    1、首先声明一个委托,并书写委托函数类;

    namespace com.gx.Delegate { //声明委托 delegate string MsgDelegate( string str ); class DelegateClass { public static double GetStringByConsole( string msg ) { return "输出内容为:"+msg; } } } 2、我们试着先调用下,调用代码如下:

    MsgDelegate msgDelegate = new MsgDelegate(new DelegateClass().GetStringByConsole);

    上面我们做的事情呢,其实就是实例化已经定义了的委托,并给该委托一个执行参数,即GetStringByConsole,该执行参数,可以是静态的方法,也可以是动态的方法。

    声明是为了用它,

    string str_msg=msgDelegate("Wild Sea"); 输出结果为:输出内容为:Wild Sea

    3、通过上面的示例,我想已经大概明白了委托是怎么回事了,下面呢我们换一种书写方式来利用委托;

    首先呢,还是一样,需要声明委托;

    //定义委托 public delegate string MsgDelegate (string name);

    然后呢书写委托函数类,如下所示:

    class DelegateClass { public static double GetStringByConsole( string msg ){ return "输出内容为:"+msg; } private static void RunDelegateFunction(string msg,MsgDelegate msgDelegate) { msgDelegate(msg); } static void Main(string[] args) { RunDelegateFunction("夜的向日葵", GetStringByConsole); Console.ReadKey(); } } 输出为:输出内容为:夜的向日葵

    以上示例一定要注意的是RunDelegateFunction方法,因为它接受一个MegDelegate类型的委托参数,后面直接调用该函数即可,方便、灵活。

    转载请注明原文地址: https://ju.6miu.com/read-11364.html

    最新回复(0)