c#的回调函数(ZT)

      我的日志 2007-3-28 23:23
想了一下,想出个更容易理解的例子。  
   
  例如有一个方法,它的作用是从来源A获取信息然后发布到目标B,但是它不会处理信息。它的工作是这个样子的:  
   
  while   (还没下班)   {  
      //   获取信息  
      //   获取信息  
      //   获取信息  
      //   获取信息   。。。  
   
      //   处理信息——我不知该怎么处理  
   
      //   发布信息  
      //   发布信息  
      //   发布信息  
      //   发布信息   。。。  
  }  
   
  它就可以将处理信息那里抽象成一个委托,这个委托的输入是获取回来的信息,输出是经过处理可以发布的信息:  
  public   delegate   string/*输出*/   ProcessInfoDelegate(string   rawMessage)/*输入*/  
   
  这样,方法就可以写成  
   
  public   void   TransferInfo(X   source,   ProcessInfoDelegate   how,   Y   destination)  
  {  
      string   msg;  
      //   ...  
      //   获取信息中  
      //   ...  
   
      msg   =   how(msg);   //   委托别人做信息处理工作  
   
      //   ...  
      //   发布信息中  
      //   ...  
  }  
   
  那么,如果有一个类需要用这个方便的方法,它就先定义它期待的信息处理方法,例如  
  class   User  
  {  
      private   string   MyProcessor(string   input)  
      {  
            return   input.Substring(2);   //   不要最前面两个字符  
      }  
   
  然后调用方法:  
      public   void   Do()  
      {  
            ....  
            ClassName.TransferInfo(src,  
                new   ProcessInfoDelegate(MyProcessor),   //   包装委托变量  
                dest);  
      }  
  }
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}