委托与事件(迷糊………………)
委托的声明
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;
………………………………
………………………………
………………………………
不是太理解还有继续研究……
………………………………