开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   0null0

委托事件+Action

个人分类: C#方法代码 | 2017-12-5 21:29

练练委托和事件

个人感悟   事件持有委托  委托注册方法   最后在该执行的时候进行调用

项羽类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DelegatePra
{
    public delegate void RaiseEventHander(string hand);
    public delegate void FallEventHander(); 
     class XiangYu
    {
        public event RaiseEventHander RaiseEvent;
        public event FallEventHander FallEvent;

        public void Raise(string hand)
        {
            Console.WriteLine("项羽{0}手持杯",hand);
            if (RaiseEvent!=null)
            {
                RaiseEvent(hand);
            }
        }

        public void Fall()
        {
            Console.WriteLine("项羽摔杯");
            if (FallEvent!=null)
            {
                FallEvent();
            }
        }
    }
}

范增类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DelegatePra
{
    class FanZheng
    {
        XiangYu xiangYu;
        public FanZheng(XiangYu xiangYu)
        {
            this.xiangYu = xiangYu;
            xiangYu.FallEvent += new FallEventHander(SignFall);
            xiangYu.RaiseEvent += new RaiseEventHander(SignRaise);
        }

        public void SignRaise(string hand)
        {
            if (hand.Equals("左"))
            {
                Attack();
            }
        }
        public void SignFall()
        {
            Attack();
        }

      public void Attack()
        {
            Console.WriteLine("范增下毒");
        }
    }
}

龙且类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DelegatePra
{
    class LongJu
    {
        XiangYu xiangYu;
        public LongJu(XiangYu xiangYu)
        {
            this.xiangYu = xiangYu;
            xiangYu.FallEvent += new FallEventHander(SignFall);
            xiangYu.RaiseEvent += new RaiseEventHander(SignRaise);

           
        }

        Action<string> SignRaise = a =>
        {
            if (a.Equals("右"))
            {
                Attack();
            }
        };

        public void SignFall()
        {
            Attack();
        }
        public static void Attack()
        {
            Console.WriteLine("龙且耍刀");
        }
    }
}

最后的晚餐:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DelegatePra
{
    class Program
    {
        static void Main(string[] args)
        {
            XiangYu xiang = new XiangYu();
            FanZheng fan = new FanZheng(xiang);
            LongJu longJu = new LongJu(xiang);
            // xiang.Fall();
            //xiang.Raise("右");
           // xiang.Raise("左");
        }
    }
}

0 0

作者的其他最新博客

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

阅读排行

评论排行

推荐博客

最新博客

返回顶部