一、委托
C# 的委托类似函数指针,可以用于定义回调方法。一个委托可以代理多个被调的方法。
二、示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo
{
class VChange
{
// 构造方法
public VChange()
{
OnValueChanged += new ValueChanged(MyDataChange);//方式一
Handler = MyDataChange;//方式二
}
// 定义委托
public delegate void ValueChanged(string s);
// 事件-方式一
public event ValueChanged OnValueChanged;
// 委托-方式二
public ValueChanged Handler;
// 定义属性
private string m_value = string.Empty;
public string Value
{
get { return m_value; }
set
{
this.m_value = value;
OnValueChanged(m_value);
Handler(m_value);
}
}
// 自有委托方法
private void MyDataChange(string s)
{
Console.WriteLine("我的值被改变了: " + s);
}
}
class Program
{
static void Main(string[] args)
{
VChange vc = new VChange();
// 添加委托调用-方式一
vc.OnValueChanged += new VChange.ValueChanged(ItDataChange);
// 添加委托调用-方式二
vc.Handler += ItDataChange;
vc.Value = "赋值值";
}
// 自定义委托方法
private static void ItDataChange(string s)
{
Console.WriteLine("它的值被改变了: " + s);
}
}
}
三、参考
四、总结
事件基于委托,所以委托的使用非常广泛,在软件的设计过程中可以灵活组合。