当前位置: 首页 > news >正文

微信小程序开发价格西安seo服务外包

微信小程序开发价格,西安seo服务外包,塘厦三正半山酒店,论文中参考文献对不上基础:1. .net框架约定,所有保存事件信息的类型都应该继承自System.EventArgs,并且类型名称应该以EventArgs结尾;委托类型应该以EventHandler结束,回调方法原型应该有一个void返回值,并且接受两个参数, 第一个Object指向…
基础:
    1. .net框架约定,所有保存事件信息的类型都应该继承自System.EventArgs,并且类型名称应该以EventArgs结尾;委托类型应该以EventHandler结束,回调方法原型应该有一个void返回值,并且接受两个参数, 第一个Object指向发送通知的对象;第二个参数继随自EventArgs类型,包括接受者需要的附加信息。
     2.如果定义的事件没有传递 给事件接收者的附加信息,便不必定义新的委托,直接使用System.EventHandler,并将EventArgs.Empty传递给第2个参数即可
public delegate void EventHandler(Object sender, EventArgs e);

.net框架程序设计
最简间的事件与委托关联
None.gif//定义委托
None.gif
public delegate void RequestHandler(string Url);
None.gif
//定义委托类型的事件
None.gif
public event RequestHandler RequestEvent;
None.gif
//定义事件处理程序,即委托的回调方法
None.gif
public void RequestMothed(string url)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
//do what you want to do;
ExpandedBlockEnd.gif
}

None.gif
//将事件处理程序添加到委托链
None.gif
RequestHandler handler = new RequestHandler(RequestMothed);
None.gif
//将委托对象添加到事件链中,删除委托对象用 -=
None.gif
RequestEvent += handler;
None.gif
//引发事件,可将事件当一个方法看待,参数必须与前面声明的一致
None.gif
RequestEvent(stringTest);

事件可用的修饰符:

Static   Virtual    Override    Abstract

Static类似于字段,类的甩的对象共享静态事件,当引用这类事件时,必须用类名称而不是名称


一:登记事件
定义一个收邮件的类MailManager,在MailManager中定义一个收到邮件便触发的事件MailMSG,传真fax寻呼pager等对象在登记MailManager和MailMSG事件,当新电子邮件到达时,MailManager将通知发送给所有登记对象,这些对象按自己的方法处理。  开始代码.

None.gifclass MailManager
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif   
//在MailManager类中定义MailMsgEventArgs类型
InBlock.gif
   public class MailMsgEventAgrs:EventArgs
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif        
public MailMsgEventArgs(string from, string to, string subject, string body)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.from=from;
InBlock.gif            
this.to=to;
InBlock.gif            
this.subject=subject;
InBlock.gif            
this.body=body;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
public readonly string from, to, subject, body;
ExpandedSubBlockEnd.gif   }

InBlock.gif
InBlock.gif   
//定义委托
InBlock.gif
    public delegate void MailMsgEventHandler(Object sender, MailMsgEventArgs args);
InBlock.gif
InBlock.gif   
//定义委托类型 的事件
InBlock.gif
   public event MailMsgEventHandler MailMsg;
InBlock.gif
InBlock.gif   
//此方法发出通知,即有邮件是通知FAX和PAGER  ,Fax和PAGER类可以重写些方法
InBlock.gif
   public virtual void OnMailMsg(MailMsgEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif      
//判断是否有对象登记事件
InBlock.gif
      if(MailMsg != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif      
dot.gif{
InBlock.gif          
//如果有,则通知委托链表上的所有对象
InBlock.gif
          MailMsg(this, e);
ExpandedSubBlockEnd.gif      }

InBlock.gif     
ExpandedSubBlockEnd.gif   }

InBlock.gif   
InBlock.gif   
//此方法在新电子邮件到达到被触发
InBlock.gif
   public void SimulateArrivingMsg(string from, string to, string subject, string body)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif            MailMsgEventArgs e 
= new MailMsgEventArgs(from, to, subject, body);
InBlock.gif            OnMailMsg(e);
ExpandedSubBlockEnd.gif   }

ExpandedBlockEnd.gif}
其中InBlock.gif   编辑器编译public event MailMsgEventHandler MailMsg;时,会产生
二:侦听事件
None.gifclass Fax
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif   
//将MailManager对象传递给构造器
InBlock.gif
    public Fax(MailManager mm)
InBlock.gif    
//将回调函数与事件关联
InBlock.gif
    mm.MailMsg += new MailManager.MailMsgEventHandler(FaxMsg);
InBlock.gif    
//回调函数
InBlock.gif
      ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
InBlock.gif        
//sender 表示MailManagercf 对象,如果要和事件触发者通信,将用到此参数
InBlock.gif         
//MailManager 对象希望提供的一些附加事件信息
InBlock.gif         
//Fax内部的处理
InBlock.gif
         Console.WriteLine("Form:{0}\n To:{1}\n Subject: {2}\n: {3}\n", e.from, e.to, e,subject, e.body);
ExpandedSubBlockEnd.gif    }

InBlock.gif    

InBlock.gif
    public void Unregister(MailManager mm)
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
         //构造一个指向FaxMsg回调方法垢MailMsgEventHandler委托实例
InBlock.gif      MailManager.MailMsgEventHandler callback 
= new MailManager.MalMsgEventHandler(FaxMsg);
InBlock.gif      
//注销MailManager的MailMsg事件
InBlock.gif
       mm.MailMsg -= callback;
ExpandedSubBlockEnd.gif   }

ExpandedBlockEnd.gif}

其中,编辑器处理mm.MailMsg += new MailManager.MailMsgEventHandler(FaxMsg);
时会将它转换为
None.gifmm.add_MailMsg(new MailManager.MailMsgEventHandler(FaxMsg));
None.gif
//调用了前面public event MailMsgEventHandler MailMsg编辑的产生的代码  public virtual void add_MailMsg()方法,所以此方法里面有一个是MailMsgEventHandler委托的实例。

三:显式控制事件注册,实际上就将public event MailMsgEventHandler MailMsg编辑时产生的内部代码源码化
None.gifClass MailManager
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif   
//传给事件接受者的类型信息,类似于前的
ExpandedSubBlockStart.gifContractedSubBlock.gif
   public class MailMsgEventAgrs : EventArgsdot.gif{..}
InBlock.gif   
//定义委托
InBlock.gif
   public delegate void MailMsgEventHandler(Object sender, MailMsgEventArgs args);
InBlock.gif
InBlock.gif  
//变化发生在这里,和前面编辑器内部产生代码一样
InBlock.gif
   private MailMsgEventHandler mailMesgEventHandlerDelegate;
InBlock.gif  
//显式定义事件及其访问器的方法
InBlock.gif
   public event MailMsgEventHandler MailMsg
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif      add
ExpandedSubBlockStart.gifContractedSubBlock.gif      
dot.gif{
InBlock.gif         mailMsgEventHandlerDelegate
=(MailMsgEventHandler)Delegate.Combine(mailMsgEventHandlerDelegate, value);;
ExpandedSubBlockEnd.gif      }

InBlock.gif      
//将传入的事件处理器(value)从委托链表上移除
InBlock.gif
       remove
ExpandedSubBlockStart.gifContractedSubBlock.gif      
dot.gif{
InBlock.gif         mailMsgEventHandlerDelegate 
= (MailMsgEventHandler)Delegate.Remove(mailMsgEventHandlerDelegate, value);
ExpandedSubBlockEnd.gif      }

ExpandedSubBlockEnd.gif   }

InBlock.gif   
//下面受保护的虚方法负责通知事件的登记对象,这里已经不是事件而是一个委托类型 的字段了
InBlock.gif   
//有点难以理解
InBlock.gif
    protected virtual void onMailMsg(MailMsgEventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif       
if(mailMsgEventHandlerDelegate != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif                    mailMsgEventHandlerDelegate(
this, e);
ExpandedSubBlockEnd.gif       }

ExpandedSubBlockEnd.gif    }

InBlock.gif    
//在新电子邮件到达时被调用
InBlock.gif
    public void SimulateArrivingMsg(string from, string to, string Subject, string body)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{dot.gif.}
ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/sunsjorlin/archive/2005/11/18/279537.html

http://www.lbrq.cn/news/2751517.html

相关文章:

  • 做标签网站刷单互联网营销策略有哪些
  • 武汉装修网站建设seo网站关键词优化报价
  • 百度的网站收录怎么做如何创建自己的网站
  • 做外贸一般用什么网站传播易广告投放平台
  • 网站首页模板自定义seo如何优化关键词
  • 百度收录网站链接入口百度推广的优势
  • 惠州做棋牌网站建设哪家服务好推广员是干什么的
  • 企业网站做优化排名象客互动营销案例分析
  • 淄博市沂源县建设局网站茂名seo顾问服务
  • 网站域名根目录在哪里深圳搜索引擎优化seo
  • 丽水网站建设哪家好搜索关键词软件
  • 浅谈高校图书馆网站建设怎样搭建一个网站
  • 做网站费用分几块网络营销意思
  • 如何做b2c网站星巴克网络营销案例分析
  • seo批量建站方法墨子学院seo
  • 天堂2免费服务器开封seo公司
  • 南京网站制作公司怎么样搜索引擎营销成功案例
  • 武汉 外贸网站建设公司淘宝seo排名优化的方法
  • 做网站的人联系电话投广告哪个平台好
  • 三亚市建设局官方网站百度云搜索引擎入口盘多多
  • 南漳网站定制怎么做公众号
  • 医疗网站建设管理海底捞口碑营销案例
  • 青岛网站优化联系方式友情链接举例
  • 网站建设与运营的预算方案刚刚中国宣布重大消息
  • 广州专业的做网站公司足球世界排名前十
  • 做水果为主的b2c网站有哪些手机自动排名次的软件
  • 北京印刷厂seo推广排名公司
  • 购物网站开发文档百度手机助手官网
  • 成都市建设网扬尘监控网站重庆网站建设推广
  • 网站没备案可以做商城吗seo推广排名软件
  • MXFP4量化:如何在80GB GPU上运行1200亿参数的GPT-OSS模型
  • 计算机网络 TCP、UDP 区别
  • 机器学习05-朴素贝叶斯算法
  • 安卓14系统应用收不到开机广播
  • 超越Transformer:大模型架构创新的深度探索
  • 【原理】C# 字段、属性对比及其底层实现