您的位置:首页 > 编程语言 > C#

C#中的事件(详解)

2009-08-04 22:10 120 查看

C#中的事件(详解)

[align=center][/align]

想了很久,总算弄明白了C#中的事件是怎么回事。呵呵...

下面是一个最简单的事件例子:

class Test
{
public delegate void EventHandler(); //①申明委托;
public event EventHandler Handler; //②定义事件;
static void Main()
{
Test t=new Test();
t.Handler +=new Test.EventHandler(MethodA); //③将事件与委托关联(订阅事件);
t.Handler(); //④触发事件;
}
public static void MethodA()
{
System.Console.WriteLine("方法A");
}
}

注意:

1.委托delegate和事件Event的关系:

委托(delegate)相当于一系列函数的抽象类,这一系列函数要求拥有相同的参数和返回值;而事件(Event)相当于委托的一个实例,只是前面冠有Event关键字。

2.在关联委托和事件时,应该注意:

①委托和事件都应该有应用对象来引用。

②传入委托中的函数,只写函数名,不带括号。

3.事件的触发,必须要有由具体的引用对象来触发。

将事件和委托和委托方法写在类外的代码为:

using System;
class Test
{
static void Main()
{
A a=new A(); //为了引用Handler而实例化A对象;
B b=new B(); //为了引用B对象中的A方法而实例化B对象;
a.Handler +=new A.EventHandler(b.MethodA);
a.Start();
}
}
class A
{
public delegate void EventHandler();
public event EventHandler Handler;
public void Start()
{
if(Handler!=null)
{
Handler();
}
}
}
class B
{
public void MethodA()
{
Console.WriteLine("方法A");
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: