委托类似于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();
}
}
}