日期:2014-05-18  浏览次数:20747 次

顿悟?!新手浅谈事件与委托
作为一个刚学c#一个多月纯新手表示委托与事件啃书+啃MSDN+做了n道习题,花了2天也没搞太清楚。但是刚才看了一个帖子,某大牛举了一个下雨打电话给邻居收衣服的例子,感觉似乎瞬间开朗!于是我根据自己的理解尽可能简洁的重写了一遍,加上自己的注释,希望能帮到和我一样纠结与此的初学者们,也请大牛多多指出各种理解不到位的地方。代码如下:
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 收衣服
{
    public delegate void Mydelegate();   //先定义一个委托类

    class me   //我
    {
        public void PickupClothes()   //我有一个收衣服的方法
        {
            Console.WriteLine("衣服收好了!");
        }
        public void PhoneNeighbor()   //我还有一个给邻居打电话的方法
        {
            Neighbor PLMM = new Neighbor();    //假设邻居是一个漂亮MM~
            PLMM.GetPhone += new Mydelegate(PickupClothes);    //告诉她怎么收衣服。。。(给getphone事件绑定一个pickupclothes的方法)
            PLMM.Doit();   //just do it...
        }
    }
    class Neighbor   //邻居
    {
        public event Mydelegate GetPhone;   //邻居有一个接电话的事件
        public void Doit()    //邻居还要有一个能处理事件的方法
        {
            if (GetPhone != null)    //如果我打电话过来不是啥都没说
            {
                GetPhone();    //那么就照我说的去做吧!
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("下雨了!");    //下雨了。。。
            me me = new me();     //实例化一个我
            me.PhoneNeighbor();    //给邻居打电话
        }
    }
}



------解决方案--------------------
不错不错,学习了