C#委托与事件

多播委托

      1、 委托可以同时进行一串动作,使用+=运算符。

      2、例子:

                      using System;

                     class A

                      {

                           static void read(string s)

                            {

                             Console.WriteLine("读" + s);

                            }

                            static void say(string s)

                             {

                             Console.WriteLine("说" + s);

                             }

                            delegate void D(string s);      //定义委托类

                            static void main()

                             { 

                                   D d  = read;          //实例化D类对象d,代替read函数

                                   d += say;              //增加d的动作

                                   d -= read;             //减少d的动作

                                   d("三国");

 

 

 

                             }

                      }   

3、多播委托的初始化

        D d ;

       d = read;

       d += read;        //程序将执行两次

匿名委托

       1、匿名委托:定义一个委托,当为委托赋值时,直接定义方法体,而不是让其代替其他函数。

       2、例子:

            using System;

            class A

              {

                    delegate void  D(string s);

                   static void main()

                      {

                           D d = delegate(string s)              //使用delegate关键字定义了d的方法体

                                {

                                 Console.WriteLine(s);

                                };

                              d("这是匿名委托");

                      }

              }

委托耦合

        1、面向对象高聚合、低耦

合:类的内部封装密切相关的成员,而类与类之间的关联度越小越好。

        2、实例:一个名为人的基类,有性别、姓名等信息。其派生类分为三类:病人、医生和护士。病人有自己的成员是生病,医生的成员是治病,护士的成员是打针。当医生生病的时候,会变成病人;病人生病久了变成医生。这时候类之间的转换会很混乱,是因为继承的原因。

        3、解决方法:使用委托实现对象之间的松散耦合

        在医生和病人之间定义一个委托,让其指向病人类中的方法生病,这个时候医生就拥有了病人的特性。

        using System;

       delegate void D(string s);

       class A

          {

              static void Main()

                  {

                    Doctor doctor = new Doctor();

                    Patient patient = new Patient();

                   doctor.d = patient.ill();

                   doctor.prescribe("九华玉露膏");

                   doctor.d("神经病");

                    Console.Read();

                  }

          }

        class Doctor

        {

            public D d;

            public void prescribe(string s)

                {

                  Console.WriteLine("医生开药" +s);

                }

        }

Class Patient

       {

            public void ill(string s)

              {

                Console.WriteLine("患病" +s);

              }

       }

事件

   1、事件:事件就相当于Qt中的信号(Signals),当给出信号的时候,两个对象之间的方法产生联系。有一个对象的事件触发另一个对象的事件。例如:老师说下课吃饭的信号和学生吃饭。

   2、事件定义,订阅,触发

         using System;

         delegate void D();              //定义委托类

        class A

        {

           static void Main()

              {

                  Car car = new Car();

                  car.run_red += Police.Write_a_ticket;                //警察订阅了对象的car的闯红灯事件

                 car.run();

                 Console.Read();

              }

        }

        Class Car

        {

            public event D run_red;                  //定义了事件

            public void run()

                 {

                       Console.WriteLine("行进中...");

                       if(run_red != null)

                       {

                         run_red();                          //触发了事件

                       }

                 }

             

        }

        class Police

        {

             public static void write_a_ticket()

                   {

                         Console.WriteLine("开罚单");          //

                   }

        }

        

 

 

        

 

# 高校智慧校园解决方案摘要 智慧校园解决方案是针对高校信息化建设的核心工程,旨在通过物联网技术实现数字化校园的智能化升级。该方案通过融合计算机技术、网络通信技术、数据库技术和IC卡识别技术,初步实现了校园一卡通系统,进而通过人脸识别技术实现了更精准的校园安全管理、生活管理、教务管理和资源管理。 方案包括多个管理系统:智慧校园管理平台、一卡通卡务管理系统、一卡通人脸库管理平台、智能人脸识别消费管理系统、疫情防控管理系统、人脸识别无感识别管理系统、会议签到管理系统、人脸识别通道管理系统和图书馆对接管理系统。这些系统共同构成了智慧校园的信息化基础,通过统一数据库和操作平台,实现了数据共享和信息一致性。 智能人脸识别消费管理系统通过人脸识别终端,在无需接触的情况下快速完成消费支付过程,提升了校园服务效率。疫情防控管理系统利用热成像测温技术、视频智能分析等手段,实现了对校园人员体温监测和疫情信息实时上报,提高了校园公共卫生事件的预防和控制能力。 会议签到管理系统和人脸识别通道管理系统均基于人脸识别技术,实现了会议的快速签到和图书馆等场所的高效通行管理。与图书馆对接管理系统实现了一卡通系统与图书馆管理系统的无缝集成,提升了图书借阅的便捷性。 总体而言,该智慧校园解决方案通过集成的信息化管理系统,提升了校园管理的智能化水平,优化了校园生活体验,增强了校园安全,并提高了教学和科研的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值