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

怎么爬虫做网站注册公司材料怎么准备

怎么爬虫做网站,注册公司材料怎么准备,厦门购买域名以后搭建网站,中国建设银行电话95533C#中的事件还真是有点绕啊#xff0c;以前用JavaScript的我#xff0c;理解起来还真是废了好大劲#xff01;刚开始还真有点想不明白为什么这么绕#xff0c;想想和JS的区别#xff0c;最后终于恍然大悟#xff01; C#中事件绕的根本原因#xff1a; C#的方法#xff…  C#中的事件还真是有点绕啊以前用JavaScript的我理解起来还真是废了好大劲刚开始还真有点想不明白为什么这么绕想想和JS的区别最后终于恍然大悟 C#中事件绕的根本原因 C#的方法它不是一个类型它只是其它类型的成员C#是一个强类型的语言定义方法时它的参数必须指定类型如public void add(int n){...}; 所以一个方法不能直接作为其它方法的参数把一个方法名作为参数无法指定类型啊会报错那我就想啊既然不能直接传入那我传入整个对象总可以吧通过传进来的对象来执行该方法如下代码 using System;namespace MyEventTest{    public class SomeClass{         public void Start(int a) { Console.WriteLine(Go:{0},a); }}        public class Publisher{                 public void StartEvent(int a, SomeClass sc)        {            if (sc ! null){sc.Start(a);  //触发回调方法}}}          public class MainClass{        static void Main()        {SomeClass some new SomeClass();Publisher p new Publisher();p.StartEvent(5,some); //Go:5}} } 以上方法确实可以但C#不完全是这样实现事件的因为方法的特殊性C#引入了委托的概念让委托对象来代表方法作为其它方法的参数而事件对象其实就是一个委托对象。下面先介绍一下委托 委托 对应于以上方法public void Start(int a) { Console.WriteLine(Go:{0},a); }我们可以定义一个委托类型public delegate void MyDel(int a); 委托的定义 委托MyDel它是一个类型类型名就是MyDel定义委托相当于定义一个新类委托在后台实现为派生自System.Delegate类。定义委托就是告诉编译器该委托将表示哪种方法(返回值类型方法签名)该方法可以是任意类型的实例方法、静态方法只要方法的签名、返回值类型与委托匹配那么该委托的实例就可以引用这些方法。使用委托必须创建该委托的实例并为它指定要引用的方法如MyDel d some.Start;注意这里不是some.Start()委托对象支持来为它添加更多的方法引用而--则是删除引用引用了多个方法的委托就叫多播委托多播委托派生自基类System.MulticastDelegate类它是System.Delegate类的子类注意只要委托对象还存在对方法的引用它就一直占用内存哦我想可以用d null;来释放委托对象d可以对委托对象执行调用如d(5);它将把调用传递给它所引用的方法some.Start(5);对于多播委托它将按顺序调用它引用的所有方法但如果其中一个方法抛出异常且没在方法内部处理则将会将异常往外抛出之后的方法调用将终止。使用委托的规则委托是和类一个级别的可以在能定义类的任何地方定义委托委托不支持继承可以为委托类型定义任意常见的访问修饰符委托对象所引用的方法也可以是匿名方法、Lambda 表达式多播委托的返回值类型必须是void否则就只能得到委托调用的最后一个方法的结果。在.NET 4.0中委托开始支持协变与逆变这样一来定义委托类型时的签名可以和所要引用的方法的签名不完全匹配不同类型之间必须是派生关系委托支持泛型.NET预定义了两个泛型版本的委托Action T 委托表示引用一个返回值类型为void的方法根据参数个数存在不同的变体版本如Actionin T1, in T2Func T 委托表示引用一个带返回值类型的方法根据参数个数存在不同的变体版本如Funcin T1, out TResult1个参数T1和返回值类型TResult。 事件 说完了委托的概念就可以继续讲事件了因为事件是基于委托的 事件的概念 类或对象可以通过事件向其他类或对象通知发生的相关事情。发送事件的类称为“发行者”接收事件的类称为“订阅者”。就是设计模式中的订阅发布者模式一个事件可以有多个订阅者。 一个订阅者可处理来自多个发行者的多个事件。如果一个事件有多个订阅者当引发该事件时会同步调用多个事件处理程序。也可异步调用。 .NET Framework 类库中的所有事件均基于 EventHandler 委托还有泛型版本EventHandlerEventArgs这个委托是.NET预定义的不需要我们定义可以直接用它来实例化一个事件对象定义如下 参数object sender对象是对发布者的实例的引用EventArgs e对象主要用来存储事件数据 public delegate void EventHandler(object sender, EventArgs e); //EventArgs主要用来存储事件数据 public delegate void EventHandlerTEventArgs(object sender, EventArgs e); 虽然在自定义的类中的事件可基于任何有效委托类型但是通常建议使用.NET预定义事件委托类型让事件基于 .NET 标准事件模式 下面是我总结的发布基于 .NET 标准事件模式的4个步骤 第1步在发布者类中实例化委托事件并定义一个实例方法用来调用委托事件因为委托事件只能通过定义它的类的实例来调用。 定义发布者类之前可先定义一个用来存储事件数据的类(它必须派生于EventArgs基类)如下 注意在方法StartEvent()中声明了一个变量来保存事件对象的副本这样在取得事件对象的副本后到触发事件时这段时间内这个事件副本就不会受其它线程的影响。如在此期间其它线程注销了回调方法那么MyEvent就为null了这时再触发事件将引发错误。这就是线程安全的事件当然还可以通过锁机制或者为事件对象始终引用一个空方法 public class MyEventArgs: EventArgs  //定义存储事件数据的类{    public int Current{get;set;} }    public class Publisher{    public event EventHandlerMyEventArgs MyEvent; //第1步实例化委托事件public int Sum{get;set;}    public void StartEvent(int a)      {             var EventCopy MyEvent; //每次都取一个副本MyEventArgs args new MyEventArgs();args.Current a;                 this.Sum a;          if (EventCopy ! null){EventCopy(this,args);  //调用事件}} } 第2步定义订阅者类在该类中定义和委托事件相匹配的方法事件触发时实际要执行的方法 public class Subscriber{    public void Dosomething1(object obj, MyEventArgs e)     {Publisher p (Publisher)obj;Console.WriteLine(Meg: Sum {0}, Current {1}, p.sum, e.Current);}     public void Dosomething2(object obj, MyEventArgs e)     {} } 第3步在客户端代码中在发布者类的实例上为委托事件注册回调方法 public class MainClass {static void Main(){Publisher p new Publisher{ Sum 0 };Subscriber sub new Subscriber();p.MyEvent sub. Dosomething1;  //注册回调方法p.MyEvent sub. Dosomething2;p. StartEvent( 5 ); //调用方法间接触发事件p.MyEvent - sub. Dosomething1;  //取消注册} } 要点事件对象其实就是一个委托对象把事件当委托来看就比较容易理解了不要被Event这个单词给蒙蔽了 介绍完了下回将介绍C#中的其它一些较难理解的概念 原文地址http://www.cnblogs.com/susufufu/p/6160764.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://wiki.neutronadmin.com/news/206183/

相关文章:

  • 大气网站首页模板集团网站建设基础方案
  • 个人网站如果做c2g的代表性电商平台
  • 做招聘网站排名深圳景观设计公司排行
  • 建设网站公司排名领硕网站seo优化
  • 东莞网站营销佛山网站建设优势
  • 哈尔滨的网站建设公司职工之家网站开发新闻稿
  • 青岛移动网站开发网站内的地图导航怎么做的
  • 淄博乐达信息技术网站页面设计层级一般控制
  • 响应式手机网站建设简单制作网站的过程
  • 查网站怎么做的广州建网站哪儿济南兴田德润简介
  • wordpress 开启评论苏州网站排名优化
  • 建商城网站公司免费行情软件app网站不下载
  • 网站发展清流县建设局网站
  • 南京 网站建设免费做自己的网站
  • 网站文字列表页模板昆明公司网站制作
  • 行业 专业 网站建设宜宾做网站的公司
  • 深圳百度网站排名优化重庆中信建投期货有限公司
  • 专门做市场调查的网站合肥做兼职网站
  • 国通快速建站wordpress添加百度自动推送
  • 浅谈旅游网站的规划与建设建设银行网站转账必须u盾吗
  • 网站制作技术长沙百度租车有限公司
  • 广告手机网站制作织梦cms做电影网站
  • 网站开发一个页面多少钱寻模板网站源码
  • 阿里云上做网站有哪些可以做策划方案的网站
  • wordpress foote在哪里短视频seo推广隐迅推专业
  • iis网站怎么做域名绑定房地产基础知识
  • 网络规划设计师大纲网站建设好怎么优化
  • 北京seo网站优化公司2万一3万电动汽车
  • 优秀专题网站wordpress 福利
  • 卖东西的网站怎么建设做商务网站