实现步骤:1. 申明委托, 2.定义监听着和调用的函数, 3.定义被监听者(绑定委托)和具体实现的函数(被调用的函数)
//
声明一个委托
public delegate void ClickChange( string psDeliver);
// 定义事件
public event ClickChange MyChange;
// 定义监听函数
protected void OnTestChange( string psStr)
{
if (MyChange != null )
{
// 调用委托的函数
MyChange(psStr);
}
}
private void button1_Click( object sender, EventArgs e)
{
string _sStr = " yes! you click this button " ;
OnTestChange(_sStr);
}
private void Form1_Load( object sender, EventArgs e)
{
// 委托绑定
this .MyChange += new ClickChange(test);
}
// 具体实现的函数
private void test( string psReceive)
{
this .label1 .Text = psReceive;
}
public delegate void ClickChange( string psDeliver);
// 定义事件
public event ClickChange MyChange;
// 定义监听函数
protected void OnTestChange( string psStr)
{
if (MyChange != null )
{
// 调用委托的函数
MyChange(psStr);
}
}
private void button1_Click( object sender, EventArgs e)
{
string _sStr = " yes! you click this button " ;
OnTestChange(_sStr);
}
private void Form1_Load( object sender, EventArgs e)
{
// 委托绑定
this .MyChange += new ClickChange(test);
}
// 具体实现的函数
private void test( string psReceive)
{
this .label1 .Text = psReceive;
}
委托和接口都允许类设计器分离类型声明和实现。给定的接口可由任何类或结构继承和实现;可以为任何类中的方法创建委托,前提是该方法符合委托的方法签名。接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。既然存在这些相似性,那么类设计器何时应使用委托,何时又该使用接口呢?
在以下情况中使用委托:
-
当使用事件设计模式时。
-
当封装静态方法可取时。
-
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
-
需要方便的组合。
-
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
-
当存在一组可能被调用的相关方法时。
-
当类只需要方法的单个实现时。
-
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
-
当正在实现的方法链接到类的类型或标识时:例如比较方法。