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

网站设计 北京 010夜月直播下载直播

网站设计 北京 010,夜月直播下载直播,湖南好搜网站建设,wordpress图像插件一. 泛型委托 所谓的泛型委托#xff0c;即自定义委托的参数可以用泛型约束#xff0c;同时内置委托Func和Action本身就是泛型委托。 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下。 1 public class Calculator22 {3 //传统解决方案一即自定义委托的参数可以用泛型约束同时内置委托Func和Action本身就是泛型委托。 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下。 1 public class Calculator22 {3 //传统解决方案一在该类中声明多个方法分别是加倍、平方、立方的方法4 5 6 //传统解决方案二在该类中声明一个万能方法通过传递不同的参数类型来区分是执行加倍还是平方或者立方操作7 8 9 //解决方案三声明一个万能方法传递一个委托进来相当于传递了一个业务逻辑进行在该方法里只需要执行即可 10 /// summary 11 /// 万能方法 12 /// /summary 13 /// param namearrsint类型的数组 /param 14 /// param namemydel自定义委托/param 15 public delegate T myDelT(T t); 16 public static void MySpecMethordT(T[] arrs, myDelT myDel) 17 { 18 for (int i 0; i arrs.Length; i) 19 { 20 arrs[i] myDel(arrs[i]); 21 //arrs[i] mydel.Invoke(arrs[i]); //等价于上面那句 22 Console.WriteLine(arrs[i]); 23 } 24 } 25 26 } 二. 内置委托 .Net FrameWork提供两个支持泛型的内置委托,分别是Action和Func,结合lambda表达式,可以提高开发效率 二者的区别 1.Action只能委托无返回值的方法,支持16个重载(in代表输入参数,该重载没有返回值) 分别是 * public delegate void Actionin T(T obj); * public delegate void Actionin T1, in T2(T1 arg1, T2 arg2); * ...... * public delegate void Actionin T1, in T2,......,in T16(T1 arg1, T2 arg2,......,T16 arg16); * 2.Func必须委托有返回值的方法,支持17个重载(注意括号里最后一个代表返回值,in代表输入参数,out代表返回值) 分别是 * public delegate TResult Funcout TResult(); * public delegate TResult Funcin T, out TResult(T arg); * public delegate TResult Funcin T1, in T2, out TResult(T1 arg1, T2 arg2); * ...... * public delegate TResult Funcin T1, in T2,.......in T16 out TResult(T1 arg1, T2 arg2,......T16 arg16); * 总结除了ref参数和out参数内置委托基本上能适用于任何泛型委托的场景非常好用 3. 内置委托和自定义委托的区别: 自定义委托需要先声明一下,让系统认识这个自定义委托,然后才能实例化赋值方法而内置委托系统本事就存在所有不需要事先声明直接实例化赋值方法即可 三. 委托的其它性质 静态方法和实例方法对于委托的区别对于静态方法Target属性为null所以效率比实例属性更高 1 public class OtherCharacters2 {3 public delegate void mySpecDelegate();4 /// summary5 /// 1.测试普通实例方法和静态方法在委托中的区别6 /// /summary7 public static void Test1()8 {9 MR mrnew MR(); 10 //实例方法 11 mySpecDelegate a mr.f1; 12 Console.WriteLine(a.Targetmr); //true 13 //静态方法 14 mySpecDelegate b MR.f2; 15 Console.WriteLine(b.Targetnull); //true 16 } 17 18 } 19 20 public class MR 21 { 22 /// summary 23 /// 普通方法 24 /// /summary 25 public void f1() 26 { 27 } 28 //静态方法 29 public static void f2() 30 { 31 32 } 33 } 四. 事件 1. 事件介绍 * 定义声明一个委托实例,然后在该实例的前面加上event关键字,就形成事件了 * 事件的用途实现广播和订阅的场景 * 1.广播者包括1个事件字段,独享执行委托的方法 * 2.订阅者通过调用 和 - 来决定何时开始或停止订阅 * 总结事件是描述这种场景模式的一个词,事件是委托的一个子集,为了满足“广播/订阅”模式的需求而生 * 事件和委托的区别 * 1. 委托是一种类型,而事件是委托的一个实例,然后在该实例前加上一个关键字 * 2. 事件有一系列规则和约束用以保证程序的安全可控事件只有 和 - 操作这样订阅者只能有订阅或取消订阅操作没有权限执行其它操作 * 3. 如果是委托那么订阅者就可以使用 来对委托对象重新赋值其它订阅者全部被取消订阅甚至将其设置为null甚至订阅者还可以直接调用委托这些都是很危险的操作广播者就失去了独享控制权 * 4. 事件保证了程序的安全性和健壮性 2. 下面代码就事件和委托进行比较 public class MyEvent{//下面的案例用委托和事件实现相同的功能public Action myDelegate;/// summary/// 触发委托执行的方法/// /summarypublic void realizeDelegate(){if (myDelegate ! null){myDelegate.Invoke();}}public event Action myEvent;/// summary/// 触发事件执行的方法/// /summarypublic void realizeEvent(){if (myEvent ! null){myEvent.Invoke();}}#region 供委托和事件测试调用的方法public static void T1(){Console.WriteLine(方法一);}public static void T2(){Console.WriteLine(方法二);}public static void T3(){Console.WriteLine(方法三);}#endregion} 3. 调用时候的区别 委托中的订阅者可以直接Invoke()来调用委托而事件中的订阅者不能直接Invoke()调用委托只能通过广播者中的方法来实现调用委托从而保证广播者独享控制权。 1 {2 Console.WriteLine(--------------------------七. 事件------------------------------------);3 MyEvent m1 new MyEvent();4 //1. 委托实现5 Console.WriteLine(--------------------------1. 委托实现------------------------------------);6 //订阅者进行订阅7 m1.myDelegate MyEvent.T1;8 m1.myDelegate MyEvent.T2;9 m1.myDelegate MyEvent.T3; 10 m1.myDelegate.Invoke(); //委托中的订阅者可以直接调用委托 11 m1.myDelegate - MyEvent.T2; 12 m1.realizeDelegate(); 13 //2. 事件实现 14 Console.WriteLine(--------------------------2. 事件实现------------------------------------); 15 m1.myEvent MyEvent.T1; 16 m1.myEvent MyEvent.T2; 17 m1.myEvent MyEvent.T3; 18 // m1.myEvent.Invoke(); //事件中的订阅者不能直接调用委托 19 m1.realizeEvent(); //只能通过发布者中方法来实现委托保证发布者独享控制权 20 m1.myEvent - MyEvent.T2; 21 m1.realizeEvent(); 22 23 } 结果
http://www.pierceye.com/news/645455/

相关文章:

  • 湖南省金力电力建设有限公司 网站广州市建设局官方网站
  • 比价网站源码免费域名领取
  • 温州做网站费用怎么推广自己的偏方
  • 鞍山建站wordpress侧边浮动
  • 江西网站优化临海外发加工网
  • 机械做网站好处无锡网络推广服务
  • 电信网站备案管理系统外贸网站推广的方法
  • 什么网站上公司的评价最客观需要做网站建设和推广的行业
  • 百度人工服务24小时电话四川seo技术培训
  • 邢台网站建设服务商教育网站制作软件
  • 罗湖区住房和建设局网站官网建设香帅摩托车官网
  • 网站建设一条东莞手机微信网站
  • 网站界面设计修改要多少钱wordpress博客转出
  • 17网站一起做网店代发流程建立一个网站需要人员
  • 如何添加网站关键词天津建设工程信息网官罿
  • 医疗网站的建设设计要注意什么做网站赚钱吗 怎么赚
  • 创造有价值的网站建设银行网站上改手机
  • 商城网站租服务器安全不怎么做和美团一样的网站
  • 网站建设 sql 模版做网站的工具 论坛
  • 万网虚拟主机两个网站权重域名做网站有用么
  • 门户网站是指六盘水做网站
  • 自助建站系统免费加盟设计用哪些网站有哪些
  • 太原制作公司网站无锡网站优化公司
  • html5 wap网站模板动画广州网站建设 信科公司
  • 西安门户网站开发wordpress如何在文章底部添加目录
  • 设计婚纱网站宁波网站优化服务
  • 建设电子商务网站的花费那些公司做网站比较厉害
  • 桂林建站平台哪家好东莞百度快速排名提升
  • 网页设计框架哈尔滨网络优化推广公司
  • 深圳专业做网站技术西安网站设计报价