| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1062 人关注过本帖
标题:一段 委托 和事件的例子
只看楼主 加入收藏
meisbrother
Rank: 2
等 级:论坛游民
帖 子:100
专家分:29
注 册:2007-5-11
结帖率:84.62%
收藏
 问题点数:0 回复次数:4 
一段 委托 和事件的例子
//本人是初学,看到一篇张子阳文章,照猫画虎的写了一遍,原文是英文,我喜欢中文写,所以就改了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 委托事件加强
{
    class _热水器类
    {
        private int _温度;
        public string _产地 = "锦州";
        public string _型号 = "菊花-1";
        public class  _报警事件类:EventArgs
        {
            public readonly  int _温度;
            public _报警事件类 (int _温度)
            {
                this._温度 =_温度 ;

            }

        }

        public delegate void _报警(object sender, _报警事件类 e);
        public event _报警 _报警事件;
        protected  virtual void _发生报警事件(_报警事件类 e)
        {
            // 可以供继承自热水器类的类重写,以便继承类拒绝其他对象对它的监视
            if (_报警事件 != null) _报警事件(this, e);// 调用所有注册对象的方法
        }
        public void _烧水方法()
        {
            for (int i = 0; i < 100; i++)
            {
                _温度 = i;
                if (_温度 > 95)
                {
                    _报警事件类 e = new _报警事件类(_温度 );
                    _发生报警事件(e);
                }
            }
        }
    }
    class _声音报警类
    {
        public void _声音报警方法(object sender,_热水器类 ._报警事件类  e)
        {
            _热水器类 _热水器 = (_热水器类)sender;
            Console.WriteLine("声音报警 产地{0}- 型号{1}: ", _热水器._产地, _热水器._型号);
            Console.WriteLine("声音报警 嘀嘀嘀,水已经 {0} 度了:",e._温度 );
            Console.WriteLine();
        }
    }
    class _显示报警类
    {
        public static  void _显示报警方法(object sender, _热水器类._报警事件类 e)
        {
            _热水器类 _热水器 = (_热水器类)sender;
            Console.WriteLine("显示报警 产地 {0}- 型号 {1}", _热水器._产地, _热水器._型号);
            Console.WriteLine("显示报警:水快烧开了,当前温度:{0}度。", e._温度 );
            Console.WriteLine();
        }
    }
    class Program

    {
        static void Main(string[] args)
        {
            _热水器类 _热水器 = new _热水器类();
            _声音报警类 _声音报警 = new _声音报警类();
            _热水器._报警事件 += _声音报警._声音报警方法;//注册方法
            _热水器._报警事件 += (new _声音报警类())._声音报警方法;//给匿名对象注册方法
            _热水器._报警事件 += new _热水器类._报警(_声音报警._声音报警方法);//也可以这么注册
            _热水器._报警事件 += _显示报警类._显示报警方法;//注册静态方法
            _热水器._烧水方法();//烧水,会自动调用注册过对象的方法

        }
    }
}

[[it] 本帖最后由 meisbrother 于 2008-12-6 08:28 编辑 [/it]]
搜索更多相关主题的帖子: 例子 委托 
2008-12-06 08:12
快速回复:一段 委托 和事件的例子
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021840 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved