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

合肥大型网站建设公司ps修图软件

合肥大型网站建设公司,ps修图软件,外贸网站制作价格表,网站建设与维护招聘条件1、委托Delegate 首先说一下delegate委托#xff0c;委托是将方法作为参数进行传递。 // 定义了一个委托类型public delegate void MyDelegate(int num);// 定义了一个啥也不干的委托实例public MyDelegate m_delegate _ {};// 定义了一个和委托相同格式的方法public …1、委托Delegate 首先说一下delegate委托委托是将方法作为参数进行传递。 // 定义了一个委托类型public delegate void MyDelegate(int num);// 定义了一个啥也不干的委托实例public MyDelegate m_delegate _ {};// 定义了一个和委托相同格式的方法public void MyFun(int num){Console.WriteLine(num);};  // 添加新的委托m_delegate MyFun;// 执行任务m_delegate(2); 2、基于委托的发布/订阅模式 基于上例对于如下的操作 m_delegate MyFun1; m_delegate MyFun2; .... m_delegate(1); 这是一个委托的多播操作一连串的任务会一起执行。 此时换一个思维假如把操作看成是订阅操作。m_delegate(1)是发布1可以看做是一个message可以是int也可以是string。这样就构成了一个发布/订阅模式。 当m_delegate(1)发布执行时委托的多播会让所有订阅函数执行。 所以订阅者只需要把委托格式的函数告诉发布者注册进去当发布者发布时所有的订阅者就相当于收到了消息。 下面写一个基于委托的发布/订阅模式 #define DEBUG3using System; using System.Diagnostics;namespace ConsoleApp1 {public delegate void SayGate(int num);public class Publisher{// 定义委托public SayGate SayGateHandler;// 触发任务public void OnTrigger(int num){// 触发任务SayGateHandler(num);}}public class Subscriber{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe1: num);}}public class Subscriber2{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe2: num);}}internal class Program{static void Main(string[] args) {Publisher publisher new Publisher();Subscriber subscriber new Subscriber();subscriber.Subscribe(publisher);Subscriber2 subscriber2 new Subscriber2();subscriber2.Subscribe(publisher);Console.ReadLine();publisher.OnTrigger(1);Console.ReadLine();}} }执行后会显示 subscribe1: 1 subscribe2: 1 3、存在的缺陷 假如有个订阅者干了坏事把写成了比如 此时执行后会显示 subscribe2: 1 即只显示了一条。 4、事件Event 针对上面的缺陷需要引入一种机制限制订阅者的行为。 在C#中event是一种特殊的委托特殊之处为订阅者只能通过和-订阅或取消。发布者仍然可以进行操作。 当将SayGateHandler定义为event之后订阅者2方式的订阅提示失败。 错误信息为事件Publisher.SayGateEvent只能出现在或-的左边从类型“Publisher“中使用时除外 新程序如下 namespace ConsoleApp1 {public delegate void SayGate(int num);public class Publisher{// 定义委托public event SayGate SayGateHandler;// 触发任务public void OnTrigger(int num){// 触发任务SayGateHandler(num);}}public class Subscriber{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe1: num);}}public class Subscriber2{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe2: num);}}internal class Program{static void Main(string[] args) {Publisher publisher new Publisher();Subscriber subscriber new Subscriber();subscriber.Subscribe(publisher);Subscriber2 subscriber2 new Subscriber2();subscriber2.Subscribe(publisher);Console.ReadLine();publisher.OnTrigger(1);Console.ReadLine();}} }5、存在的缺陷2 以上程序有2个订阅者但是假如没有订阅者此时发布后会怎么样 将以上代码注释后做测试报错信息如下 此处报错的意思是SayGameHandler没有实例化。 有两种解决方案 1发布者实例化一个空的委托 public event SayGate SayGateHandler _ { }; 2触发事件时检测下是否实例化 // 触发任务 SayGateHandler?.Invoke(num); 两种方法选择一种即可。 最后一个完整的Event示例如下 namespace ConsoleApp1 {public delegate void SayGate(int num);public class Publisher{// 定义委托public event SayGate SayGateHandler;// 触发任务public void OnTrigger(int num){// 触发任务SayGateHandler?.Invoke(num);}}public class Subscriber{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe1: num);}}public class Subscriber2{public void Subscribe(Publisher publisher){// 订阅publisher.SayGateHandler SayHello;}public void SayHello(int num){Console.WriteLine(subscribe2: num);}}internal class Program{static void Main(string[] args) {Publisher publisher new Publisher();Subscriber subscriber new Subscriber();subscriber.Subscribe(publisher);Subscriber2 subscriber2 new Subscriber2();subscriber2.Subscribe(publisher);Console.ReadLine();publisher.OnTrigger(1);Console.ReadLine();}} }
http://www.zqtcl.cn/news/820536/

相关文章:

  • 网络营销网站建设流程网站功能设计指什么
  • 企业网络推广网站琼海市建设局网站
  • 移动网站搭建网页设计页面设计
  • 建设网站进行商品营销的重要性恢复正常百度
  • 美容会所网站模板下载jsp网站开发实现增删改查
  • 注册网站需要注意什么深圳建站公司兴田德润官网多少
  • 广东网站优化布吉做棋牌网站建设有哪些公司
  • 联邦快递的网站建设图书馆建设网站注意点
  • 西安好的皮肤管理做团购网站wordpress stats
  • 文山 网站建设 滇icp卡盟网站顶图怎么做
  • 北京网站建设公司哪些好电商建站
  • 沈阳百度广告广州营销seo
  • 营销型企业网站建设步骤做网站怎样和客户沟通
  • 多媒体教学网站开发的一般步骤网络公司网站赏析
  • 阿里云手机网站建设多少钱wordpress幻灯片制作
  • 个人博客网站下载公司邮箱免费注册
  • 厦门外贸网站建设多少钱wordpress 增大字体
  • 可以做外链的网站有哪些外贸阿里巴巴国际站
  • 潮安区住房和城乡建设局网站网站开发技术分析
  • 网站跳出率因素建设单位应该关注的网站
  • php开发的大型金融网站有哪些网站开发可以自学吗
  • 个人建网站成本wordpress 增加阅读量
  • wordpress构建自己的网站大连网站建设主页
  • 棋牌网站开发工程师网站app制作费用单
  • 为什么做网站比app便宜精准营销服务
  • 网站平台做捐助功能有风险吗wordpress博客 翻墙
  • 泰州网站建设专业团队长沙seo顾问
  • 网站建设情况简介seo的基本步骤顺序正确的是
  • wordpress 文件目录结构关键字优化价格
  • 连云港网站关键字优化市场网站 设计 文档