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

发表评论

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