我现在在自学c#,最近看到委托和事件,想请教大虾们用委托和事件遍一个简单的程序,实现键盘输入两个数,当两数相加小于50时,显示该值;相加大于50时,显示“超出50了”。

解决方案 »

  1.   

    你这个例子不好,我给你设计了另一个。
    每隔一段时间你请求一个类产生一个随机数,并要求如果产生的数大于50就通知我。
    文件1:using System;
    using System.Timers;namespace ConsoleApplication1
    {
        public delegate void TheEvent(int i);//自定义一个委托类型,无返回值,参数是一个int。
        
        class NumberCreater
        {
            private Random ra = new Random();        /// <summary>
            /// 当大于50的数被创建后则引发事件
            /// </summary>
            public event TheEvent BigNumberCreated;//为这个类增加一个事件        public void Create(Object sender, ElapsedEventArgs e)
            {
                int i = ra.Next(100);
                if (i > 50)
                {
                    if (BigNumberCreated != null)//保证确实有人订阅了此事件,有人订阅我才通知他嘛
                        BigNumberCreated(i);
                }
            }    }
    }
    文件2:using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                System.Timers.Timer timer = new System.Timers.Timer(500);            NumberCreater nc = new NumberCreater();            nc.BigNumberCreated += delegate(int i)//用一个匿名方法订阅事件,以便获得通知
                {
                    Console.WriteLine(i);//把产生的大数显示出来。你也可以进行别的处理
                };            timer.Elapsed += new System.Timers.ElapsedEventHandler(nc.Create);//timer每次到时间后就会调用nc.Create(),后者就随机产生一个数,如果>50就把它显示出来。            timer.Start();            Console.Read();
            }
        }
    }