netInfo

学习的最好方式就是写下来,不积跬步,无以致千里

博客园 首页 新随笔 联系 订阅 管理

委托可以认为是一种把引用存储为函数的类型

委托使用delegate关键字。

定义委托之后,就可以声明该委托类型的变量,然后初始化这个变量与委托有相同签名的函数引用。,最后,使用委托变量调用这个函数。

委托对象可以组合,用+运算符来组合。组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。

委托的用途主要与事件处理有关。

看看一个小例子

 

using System;

 

namespace ConsoleApplication1

{

     /// <summary>

     /// Class1 的摘要说明。

     /// </summary>

     ///

     delegate void processDelegate(string str);

 

     class Class1

     {

         /// <summary>

         /// 应用程序的主入口点。

         /// </summary>

         ///

         public static void Welcome(string s)

         {

              Console.Write("Welcome to:  "+s);

         }

 

         public static void happynewyear(string s)

         {

              Console.Write("happy new year: "+s);

         }

         //函数中调用

         public static void execute(processDelegate process)

         {

              process("csdn");

         }

 

         [STAThread]

         static void Main(string[] args)

         {

              //使用新的委托类型声明变量

              processDelegate process,process1,process2;

              //初始化委托变量,使用new建立一个新委托,这里的参数与委托类型的参数不匹配

              process=new processDelegate(Welcome);

              process("yyg");

             

              process1=new processDelegate(happynewyear);

              process1("yyg");

              //组合委托

              process2=process+process1;

              process2("xxyy");

 

              execute(process);

         }

     }

}

 

最后结果是

Welcome to : yyg

Happy new year :yyg

//组合委托

Welcome to : xxyy

Happy new year : xxyy

//函数

Welcome to : csdn

posted on 2005-01-11 01:07  边城浪子  阅读(527)  评论(1)    收藏  举报