委托与事件(迷糊………………)

委托的声明
public delegate void MyDelegate(string str);

      委托是一种特殊的类型--class,用途是来实现对一种方法的封装。在某种事件发生时,自动调用该方法。好处显然易见,它使用户可以自定义自己的方法实现,通过封装,CLR会在相应事件激发时调用你定义的方法,实现你的功能。
1.委托的定义和方法的定义类似,只是在前面加了一个delegate,但委托不是方法,它是一种类型。是一种特殊的类型,看成是一种新的对象类型比较好理解。用于对与该委托有相同签名的方法调用。

例子:

public delegate void SayDelegate(string name);//先声明一个委托:
   

 

 public class ClassPeople
    {
        public void SayChinese(string name)
        {
            Console.WriteLine("你好!"+name);
        }
        public void SayEnglish(string name)
        {
            Console.WriteLine("Hello"+name);
        }
        public void DoWork(string name,SayDelegate MakeSay)//这样就可以一参数的形式进行传递……
        {
            MakeSay(name);
        }
    }
    class Program
    {
        static void Main()
        {
            ClassPeople people = new ClassPeople();
            people.DoWork("陈兵辉",people.SayChinese);
            people.DoWork("chenbinghui",people.SayEnglish);
            Console.ReadKey();
        }
    }

 

 

 

 

事件概述

      事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装


事件的声明

1.声明一个委托
public delegate void EventHandler(object sender, System.EventArgs e);

2.声明一个事件
public event EventHandler Changed;
………………………………

………………………………

………………………………

不是太理解还有继续研究……

………………………………

posted on 2011-04-28 14:58  h2内存数据库  阅读(140)  评论(0编辑  收藏  举报

导航