分分钟用上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     }

发表评论

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