分分钟用上C#中的委托和事件 – 雾中人

开端知识C的每个猿,在合理的碰到委托和事变的得意地穿戴时,估价都是参与望而却步的。,爱幻想。百度一搜,下去得意地穿戴引见的文字是很多文字。,自由自在,有很多好文字停止划桨变得流行。。咱们可以景象这些文字。,聚集初学者,据我看来我恰当的置信我能变得流行。,一旦要在本人的顺序中扑灭委托和事变,这是个二百五。,我不变卖该怎地用。,我不变卖多少应用它。。

本文心不在焉一点得意地穿戴引见。,针对帮忙同窗们敏捷的扑灭委托和事变,进入C的高的边线。

  • 率先,咱们需求变卖,究竟在什么产生下必要的应用委托和事变呢?

请看下面的场面。:A领袖要停止陶醉。,邀请分支形成B和C各自带队伏击在屏幕安博,称赞以反映订购:高处你的左侧。,B率领球队被淘汰。;用右高处你的反映。,C率领球队被淘汰。;倘若你直线把反映秋天来,B和C同时放弃死。。B、C袭击的详细办法,酋长非物质的。。(全文终止时的结合的指定遗传密码)。)

意志薄弱的浮动诊胎法快的同窗,一起说出狱,这种逻辑,在内地的哪独身应用if先决条件的来决定判决?:

 1if(左侧抬高)
 2{
 3  B率领球队被淘汰。  
 4}
 5elseif(高处你的右)
 6{
 7  C率领球队被淘汰。  
 8}
 9elseif(直线到反映)
10{
11  B率领球队被淘汰。
12  C率领球队被淘汰。  
13}
14else15{
16  按兵不动  
17 }

倘若它焉简略,那我为什么要写这篇文字呢?。请让因此先生周到的想想。:酋长如果收回射击?他甚至心不在焉对某人找岔子本人。。晚年的下面的伪指定遗传密码。,你计划拔出到哪里呢?难道B和C就一向一气的用While绕过做是你这么说的嘛!判别吗?显然不合适的吧。更要紧的,倘若你展开它,分支形成不仅是B和C,不过B、C、D、E等,全世界都有本人的方法来回应枪弹的召唤。,因而到某种状态枪弹者A来说,咱们将会独自处置每个分支形成。,下面提到的伪指定遗传密码,将有无限的的扩张和适当地的。,显然产生断层咱们希望的。。

适当地的逻辑将会是,B和C可能的选择陶醉上产生了是什么。,只需延缓领队收回反映升腾或低潮状态的射击。,一旦枪弹者A收回射击。,它相当于迂回的占有分支形成。,占有被等同于的人,他们都是活跃的人行为的。!

咱们下定义了三个类。,区分模仿头A和副B。、C:

////// 头A
    ///publicclass A
    { 
    
    }
    ////// 分支形成B
    ///publicclass B
    { 
    
    }
    ////// 分支形成C
    ///publicclass C
    { 
    
    }

头A的类有把酒和摔杯两种办法,在内地,举办法具有礼仪化的参量。,送是左侧抬高。,静止摄影用右高处单片眼镜?。分支形成B和C的类,每个都有独身袭击办法。。

////// 头A
    ///publicclass A
    {
        ////// 把酒
        //////手:左、右publicvoid Raise(string 手)
        {
            ("头A{0}手把酒", 手);
        }
        ////// 摔杯
        ///publicvoid Fall()
        {
            ("头A摔杯");
        }
    }
    ////// 分支形成B
    ///publicclass B
    {
        ////// 袭击
        ///publicvoid Attack()
        {
            ("分支形成B提出袭击");
        }
    }
    ////// 分支形成C
    ///publicclass C
    {
        ////// 袭击
        ///publicvoid Attack()
        {
            ("分支形成C提出袭击");
        }
    }

到这程度,三个孤独班,建筑物终止。这么,怎地让分支形成B和C,基准枪弹的阿凯纳姆语言文字,他能去参与实质性的的行为吗?
咱们需求在头A类中,采取一种办法,把其企图印出去。在头A类过去的,区分下定义独身带形参的把酒委托RaiseEventHandler和独身不带形参的摔杯委托FallEventHandler。命名必须穿戴的是在办法的称号前面添加EvEnthDANDLE。,不要问我为什么。,有很多下去为诸如此类文字。,你可以查一下。。这篇文字的目标是,教会权威多少敏捷的的应用委托和事变。自由自在,您也可以不遵照因此命名必须穿戴的。,对顺序的运转心不在焉产生。,它只会高处你本人或另一边景象指定遗传密码的难事。。

delegatevoid RaiseEventHandler(string 手);
delegatevoid FallEventHandler();

晚年的,在头A类中,下定义两个事变。这类似于在WrFrm中拖放钉钮扣于时的产生。,双点取钉钮扣于,您可以汇编者它的事变。。

////// 头A把酒事变
        ///publicevent RaiseEventHandler RaiseEvent;
        ////// 头A摔杯事变
        ///publicevent FallEventHandler FallEvent;

好了,充分发挥潜在的能力上级的两个步后,就可以在头A的把酒和摔杯办法中,调扑灭述两个事变。。这样的事物,倘若B和C订阅了因此事变,它可以志愿地履行。。

////// 把酒
        //////手:左、右publicvoid Raise(string 手)
        {
            ("头A{0}手把酒", 手);
            // 致电举杯祝觞战役,输出左或右作为参量if (RaiseEvent!=null)
            {
                RaiseEvent(手);
            }
        }
        ////// 摔杯
        ///publicvoid Fall()
        {
            ("头A摔杯");
            // 致电杯赛if (FallEvent!=null)
            {
                FallEvent();
            }
        }

同一,不要问为什么。。基准上级的巧妙地控制,您可以。一旦煮熟,就应用这种办法。,变得流行意思,自由自在变得流行这是为什么写的。。

在分支形成B和C本质上,必要的在头A,A线索可以被完成。。因而,在B类和C类,需求述说A,该述说可以经过B和C的建筑物有或起作用停止围住化。围住化晚年的,您可以订阅B类和C类达到目标A类事变。。

结合的的指定遗传密码列举如下:

  1class Program
  2    {
  3staticvoid Main(string[] ARGS)
  4        {
  5             A a = new A(); // 下定义头A  6  7             B b = new B(a) // 下定义分支形成B  8  9             C c = new C(a) // 下定义分支形成C
 10 11// 头A左侧把酒 12             ("");
 13 14// 头A右把酒
 15//(右)
 16 17// 头A摔杯
 18//(); 19 20            Console.ReadLine();
 21// 因B和C订阅了独身事变。,因而不需求指定遗传密码。,B和C将如礼仪行事。。 22        }
 23    }
 24 25/// 26/// 头A把酒委托
 27/// 28///手:左、右 29publicdelegatevoid RaiseEventHandler(string 手);
 30/// 31/// 头A摔杯委托
 32/// 33publicdelegatevoid FallEventHandler();
 34/// 35/// 头A
 36/// 37publicclass A
 38    {
 39/// 40/// 头A把酒事变
 41/// 42publicevent RaiseEventHandler RaiseEvent;
 43/// 44/// 头A摔杯事变
 45/// 46publicevent FallEventHandler FallEvent;
 47 48/// 49/// 把酒
 50/// 51///手:左、右 52publicvoid Raise(string 手)
 53        {
 54             ("头A{0}手把酒", 手);
 55// 致电举杯祝觞战役,输出左或右作为参量 56if (RaiseEvent!=null)
 57            {
 58                RaiseEvent(手);
 59            }
 60        }
 61/// 62/// 摔杯
 63/// 64publicvoid Fall()
 65        {
 66             ("头A摔杯");
 67// 致电杯赛 68if (FallEvent!=null)
 69            {
 70                FallEvent();
 71            }
 72        }
 73    }
 74/// 75/// 分支形成B
 76/// 77publicclass B
 78    {
 79        A a;
 80 81public B(A) a)
 82        {
 83this.a = a;
 84             Event += new RaiseEventHandler(a_RaiseEvent); // 把酒举杯祝觞 85             Event += new FallEventHandler(a_FallEvent); // 订购杯赛 86        }
 87/// 88/// 把酒得意地穿戴
 89/// 90///若头A左侧把酒,B袭击 91void a_RaiseEvent(string 手)
 92        {
 93if ((""))
 94            {
 95                Attack();
 96            }
 97        }
 98 99///100/// 枪弹者在杯达到目标得意地穿戴
101///102void a_FallEvent()
103        {
104            Attack();
105        }
106107///108/// 袭击
109///110publicvoid Attack()
111        {
112             ("分支形成B提出袭击,大叫:张飞莱亦独身霸道的人。!");
113        }
114    }
115///116/// 分支形成C
117///118publicclass C
119    {
120        A a;
121public C(A) a)
122        {
123this.a = a;
124             Event += new RaiseEventHandler(a_RaiseEvent); // 把酒举杯祝觞125             Event += new FallEventHandler(a_FallEvent); // 订购杯赛126        }
127///128/// 把酒得意地穿戴
129///130///若头A右把酒,晚年的袭击131void a_RaiseEvent(string 手)
132        {
133if ((""))
134            {
135                Attack();
136            }
137        }
138139///140/// 枪弹者在杯达到目标得意地穿戴
141///142void a_FallEvent()
143        {
144            Attack();
145        }
146///147/// 袭击
148///149publicvoid Attack()
150        {
151             ("分支形成C提出袭击,一组衰弱的神打败了大虫。");
152        }
153     }

发表评论

电子邮件地址不会被公开。 必填项已用*标注