首页 > 学院 > 开发设计 > 正文

委托、Lambda表达式、事件系列07,使用EventHandler委托

2019-11-17 02:51:05
字体:
来源:转载
供稿:网友

委托、Lambda表达式、事件系列07,使用EventHandler委托

谈到事件注册,EventHandler是最常用的。

19EventHandler是一个委托,接收2个形参。sender是指事件的发起者,e代表事件参数。

□ 使用EventHandler实现猜拳游戏

使用EventHandler实现一个猜拳游戏,每次出拳,出剪刀、石头、布这三者的其中一种。

首先抽象出一个被观察者,其中提供了事件,提供了执行事件的方法。

    public class FistGame
    {
        public string FistName { get; set; }
        public event EventHandler GuessFist;
        public void Start()
        {
            if (GuessFist != null)
            {
                GuessFist(this, EventArgs.Empty);
            }
        }
    }

以上,在Start方法内部调用事件GuessFist的时候,实参this代表FistGame类本身。

客户端必须有一个方法和EventHandler的定义保持一致,这样才可以注册到FistGame类的EventHandler事件上。

   class PRogram
    {
        static void Main(string[] args)
        {
            FistGame jiandao = new FistGame(){FistName = "剪刀"};
            jiandao.GuessFist += GetFistResult;
            FistGame shitou = new FistGame() { FistName = "石头" };
            shitou.GuessFist += GetFistResult;
            FistGame bu = new FistGame() { FistName = "布" };
            bu.GuessFist += GetFistResult;
            FistGame finalFist = null;
            var temp = new Random().Next()%3;
            if (temp == 0)
            {
                finalFist = jiandao;
            }
            else if(temp == 1)
            {
                finalFist = shitou;
            }
            else
            {
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表