C#的委托与事件初探
委托、事件是C#编程中的重要元素,理解委托与事件,在windows面向对象编程中很有必要。今天看了一本书,名字叫《C#编程深度探索》,里面的委托与事件方面讲得虽然少,但是讲的还不错,挺有助于初学者理解它们。看完之后我自己写了个例子,加深自己的记忆。
委托类似于c++中的函数指针,不同的是只需含有与该委托相同签名(返回值,参数等等)的方法,委托
都可以调用,而c++中一个指针一次只能调用个一方法,如需更改调用要改变指针的所指地址;
1.声明一个委托
我在类A中声明一个委托 ChangeHandler();
2.声明事件
用ChangeHandler这个委托声明一个使用ChangHandler签名的事件
3.绑定
我在B中声明了一个A的对象a,并对对其进行绑定事件响应代码,Change是B类里的一个函数
4.使用
在A中声明一个方法
声明假如changed事件已经绑定至少一个响应,则执行该事件
详细代码如下:
委托类似于c++中的函数指针,不同的是只需含有与该委托相同签名(返回值,参数等等)的方法,委托
都可以调用,而c++中一个指针一次只能调用个一方法,如需更改调用要改变指针的所指地址;
1.声明一个委托
我在类A中声明一个委托 ChangeHandler();
public delegate void ChangeHandler();
2.声明事件
用ChangeHandler这个委托声明一个使用ChangHandler签名的事件
public event ChangeHandler changed;
3.绑定
我在B中声明了一个A的对象a,并对对其进行绑定事件响应代码,Change是B类里的一个函数
a.changed += new A.ChangeHandler(this.Change);
private void Change()
{
Console.WriteLine("Some thing have been changed!");
}
private void Change()
{
Console.WriteLine("Some thing have been changed!");
}
4.使用
在A中声明一个方法
public void activation()
{
if(changed!=null)
changed();
}
{
if(changed!=null)
changed();
}
声明假如changed事件已经绑定至少一个响应,则执行该事件
详细代码如下:
using System;
class class1
{
static void Main()
{
B b=new B();
b.DoChange();
}
public class A
{
public delegate void ChangeHandler();
public event ChangeHandler changed;
public A()
{
}
public void activation()
{
if(changed!=null)
changed();
}
}
public class B
{
private A a;
public B()
{
a = new A();
a.changed += new A.ChangeHandler(this.Change);
}
private void Change()
{
Console.WriteLine("Some thing have been changed!");
}
public void DoChange()
{
a.activation();
}
}
}
class class1
{
static void Main()
{
B b=new B();
b.DoChange();
}
public class A
{
public delegate void ChangeHandler();
public event ChangeHandler changed;
public A()
{
}
public void activation()
{
if(changed!=null)
changed();
}
}
public class B
{
private A a;
public B()
{
a = new A();
a.changed += new A.ChangeHandler(this.Change);
}
private void Change()
{
Console.WriteLine("Some thing have been changed!");
}
public void DoChange()
{
a.activation();
}
}
}
by Kevin wu