委托理解之示例

来源:互联网 发布:西门代练淘宝店 编辑:程序博客网 时间:2024/05/18 03:08

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

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

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用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类型的委托参数,后面直接调用该函数即可,方便、灵活。

1 0
原创粉丝点击