using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 事件_基本使用_
{
    public class Person
    {
        private int _currentBp=120;
        private int _maxBp;
        public Person(int maxBp)
        {
            this._maxBp = maxBp;
        } 
        public event callEventHandler callEvent;
        public void increaseBp()
        {
            this._currentBp += 5;
            if (this._currentBp > this._maxBp)
            {
                if (this.callEvent != null)
                    this.callEvent(); //为什么一直是null
            }
        }
      
    }    public delegate void callEventHandler();    public class Wife
    {
        private Person _person;
        public Wife(Person person)
        {
            this._person = person;
            this._person.callEvent+=new callEventHandler( this.savHusband);
        }
        public void savHusband()
        {
            Console.WriteLine("夫人救丈夫中");  
        }
    }    public class Stranger
    {
        private Person _person;
        public Stranger(Person person)
        {
            this._person = person;
            this._person.callEvent+=new callEventHandler( this.call120);
        }
        public void call120()
        {
            Console.WriteLine("Call 120");
        }
    }
}
 static void Main(string[] args)
        {
            SaveHusband();
            Console.ReadKey();
        }
 static void SaveHusband()
        {
            Person person = new Person(130);
            person.increaseBp();
            person.increaseBp();
            person.increaseBp();
           
            Wife wife = new Wife(person);
            Stranger stranger = new Stranger(person);
             
        }
刚复习事件,然后做了这题,
思路是,先定义事件的委托,
        然后在类的内部定义事件,
        然后在一定条件下触发事件
        最后调试。
不知道哪里错了,大家帮忙看看。

解决方案 »

  1.   

    哎,没事了,解决了,static void SaveHusband()
            {
                Person person = new Person(130);
                person.increaseBp();
                person.increaseBp();
                person.increaseBp();
               
                Wife wife = new Wife(person);
                Stranger stranger = new Stranger(person);
                 
            }这里应该改成static void SaveHusband()
            {
                Person person = new Person(130);
                 Wife wife = new Wife(person);
                Stranger stranger = new Stranger(person);
                person.increaseBp();
                person.increaseBp();
                person.increaseBp();
               
               
                 
            }太大意了
      

  2.   


    static void SaveHusband()
    {
        Person person = new Person(130);
        
        Wife wife = new Wife(person);
        Stranger stranger = new Stranger(person);
       
        person.increaseBp();
        person.increaseBp();
        person.increaseBp();
    }
    这个函数里面内容有问题, 得先实例前面的对象,再改变条件满足触发条件 。
      

  3.   

    把涉及 Stranger的部分去掉是好的