• C# 委托与事件


    c#事件 委托:

        1.类似观察者模式。
        2.当某个对象(类),执行某个动作时,之前委托的事情会自动完成。
        (如B,C订阅A的事件,当A执行某动作,B和C均会按照约定进行对应动作)



    //使用步骤:

        1.定义 delegate委托类,event 事件
            
            //首领A:举杯委托
        public delegate void RaiseEventHandler(string hand);
            public class A
            {
            
            // 首领A:举杯事件      
            public event RaiseEventHandler RaiseEvent;
        
          
       // 2.绑定事件对应的函数
            // 举杯
            public void Raise(string hand)
            {
                Console.WriteLine("首领A{0}手举杯", hand);
                // 调用举杯事件,传入左或右手作为参数
                if (RaiseEvent!=null)
                {
                    RaiseEvent(hand);
                }
            }


        

        


      //  3.编写约定


         public class B
            {
                A a;

                public B(A a){
                this.a = a;
                a.RaiseEvent += new RaiseEventHandler(a_RaiseEvent); // 订阅举杯事件
                  
                        }
             
            // 首领举杯时的动作     
            void a_RaiseEvent(string hand)
            {
                if (hand.Equals("左"))
                {
                    Attack();
                }
            }
          
            // 约定的攻击函数   
            public void Attack()
            {
                Console.WriteLine("部下B发起攻击,大喊:猛人张飞来也!");
            }
        }



       // 4.测试

        class Test{
            static void Main(string[] args){
                A a = new A(); // 定义首领A
     B a = new B(a)
                // 首领A左手举杯
                a.Raise("左");

                // 首领A右手举杯
                //a.Raise("右");
     
             
                // 由于B和C订阅了A的事件,所以无需任何代码,B和C均会按照约定进行动作。
                    }
            }

     委托用来执行一个委托所指向的函数 
    线程
    是让你的程序非线性的运行,排除消息队列等概念,你可以简单理解为就是“同时”让软件做几个事情,就像你在睡觉的同时还在呼吸外加流口水做梦

    原文:http://www.cnblogs.com/yinqixin/p/5056307.html

  • 相关阅读:
    PL/SQL快捷键
    <c:if>条件判断 和 取值做乘法运算
    文档保存后找不到了误以为丢失,重做!
    Gson将参数放入实体类中进行包装之后再传递
    [leedcode 66] Plus One
    [leedcode 65] Valid Number
    [leedcode 64] Minimum Path Sum
    [leedcode 63] Unique Paths II
    [leedcode 62] Unique Paths
    [leedcode 61] Rotate List
  • 原文地址:https://www.cnblogs.com/j2ee-web-01/p/7160012.html
Copyright © 2020-2023  润新知