网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
C#事件与委托趣谈
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
的代码:employee.PlayGame += new DelegateClassHandle(admin.Notify);通过DelegateClassHandle将两个类的交互进行了绑定,当employee.Games方法调用后,触发PlayGame事件,而该事件将被委托给admin的Notify方法处理,通知董事长有雇员在上班时间玩游戏。但董事长并不满足这种简单的通知,他还想知道究竟是谁在上班时间违反规定。显然,现在委托对象必须传递必要的参数才行,这个要求也可以很容易地办到。事件的参数可以设置为任何类型的数据,在.NET框架中,还提供了事件参数基类EventArgs专门用于传递事件数据。从该EventArgs类派生一个自定义的事件参数类CustomeEventArgs,这个类型将携带雇员姓名和年龄信息:public class CustomeEvetnArgs : EventArgs{    string name = "";    int age = 0;    public CustomeEvetnArgs()    { }    public string Name    {        get { return this.name; }        set { this.name = value; }    }    public int Age    {        get { return this.age; }        set { this.age = value; }    }}修改委托类型DelegateClassHandle的定义,让其携带必要的参数:public delegate void DelegateClassHandle(object sender, CustomeEvetnArgs e);雇员类的代码修改后如下:public class Employee{    private string _name;     public string Name    {        get { return _name; }        set { _name = value; }    }    private int _age;     public int Age    {        get { return _age; }        set { _age = value; }    }     public event DelegateClassHandle PlayGame;     public void Games()    {        if (PlayGame != null)        {            CustomeEvetnArgs e = new CustomeEvetnArgs();            e.Name = this._name ;            e.Age = this._age;            PlayGame(this, e);        }    }}在Games方法中,首先新建一个CustomeEventArgs对象,然后设置了必要的属性Name和Age。董事长的通知方法也必须相应地进行修改:public class Admin{    public void Notify(object sender, CustomeEvetnArgs e)    {        System.Console.WriteLine(e.Name+" is "+e.Age.ToString());    }}将两个类型对象进行关联的代码也需要进行相应的修改:Employee employee = new Employee();employee.Name = "Mike&q
  • 上一篇资讯: C#正则表达式整理备忘
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号