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

C#学习笔记19-委托和事件

2017-10-02 20:56 483 查看
1.委托

关键字:delegate

使用delegate可以声明一个委托,

delegate void MyDelegate();

委托可以将它理解为一个数据类型,以后就可以用MyDelegate来声明具有这种签名的新委托。

=可以用来初始化,+=用来添加新的方法,-=用于删除。

static void Test1()
{
Console.WriteLine("Test1");
}

static void Test2()
{
Console.WriteLine("Test1");
}

private delegate void MyDelegate();
static void Main(string[] args)
{
MyDelegate de;
de = Test1;
de += Test2;
de -= Test2;
de();             //调用
 }


2.事件

关键字:event

使用event来声明一个事件

event MyDelegate myEvent;

事件和委托的操作几乎一样,除了声明关键词不一样以外,添加和删除方法的操作都完全一样。

static void Test1()
{
Console.WriteLine("Test1");
}

static void Test2()
{
Console.WriteLine("Test1");
}

private delegate void MyDelegate();

private static event MyDelegate myEvent;
static void Main(string[] args)
{
myEvent = Test1;
myEvent += Test2;
myEvent -= Test2;
}


事件可以理解为封装后的委托,但它们之间还是有区别:

(1)声明的关键字不一样;

(2)委托可以在类外直接调用,但是事件只可以在类里调用,类外是不可以调用的。

委托和事件的作用:

        一般我们会把委托和事件用来做事件监测。举个例子,我们制作了一个按钮,为这个按钮注册了一个事件,我们不知道也不用知道当点击了这个按钮后会发生什么事情,我们只需要提供这个事件接口,然后每当按钮被点击并且事件不为空就调用这个事件。之后可能会有其他的人把我们制作的按钮拿到他的工程里去使用。他希望点击按钮过后让他的场景开始生成,他就可以把他写好的方法添加到我们提供的事件接口里,这样就可以实现点击按钮就开始生成场景。之后他又希望按钮点击后音乐也可以响起,这样也可以把音乐响起的方法添加到事件中,按钮点击后在场景生成的同时音乐也会响起。

        这就时委托和事件的妙用,我们不用知道我们的“按钮”到底需要实现什么,我们只需要提供这个事件变化,这样就可以完成事件的监测了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 学习笔记