通过Demo来细看C#事件的内在机制
2010-09-30 22:44:34 来源:WEB开发网今天在博客园里面搜索了关于Delegate的文章,已经有很多好的博文了。最近我也研究了一下关于Delegate(委托)的背后的东西,也希望把研究的心得写出来供笔记参考。
我们可能会听别人谈起过C#事件,至少我曾经听同行这样描述过:
1、 C#事件是特殊的委托
2、 C#中使用委托模型来实现事件的。
3、 C#中的委托是一个引用类型,可以把它看成一个特殊的”类”。
所以我这里就通过C#事件来说Delegate(委托)。先看一段示例代码:
public delegate void ProcessEventHandler(string name);
public class CharlesLog
{
public event ProcessEventHandler processEvent;
public void ProcessHandler(string name)
{
if (processEvent != null)
{
processEvent(name);
}
else
{
processEvent = new ProcessEventHandler(DefaultHandler);
processEvent(name);
}
}
public void DefaultHandler(string name)
{
Console.WriteLine("default Process!");
}
}
class Program
{
static void Main(string[] args)
{
CharlesLog charlesLog = new CharlesLog();
charlesLog.processEvent += new ProcessEventHandler(CustomProcess);
charlesLog.ProcessHandler("CharlesChen");
}
public static void CustomProcess(string name)
{
Console.WriteLine("custom Process!");
}
}
赞助商链接