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

C#事件浅谈(需知委托)

2017-04-09 14:58 302 查看
学习面向对象也有几天了,自从看到接口那里就挺蒙的,完全听不懂,在网上看的视频,用了10分钟讲解事件,还举了一个不算简单的列子,真的是看的头疼,对于没有学过面向对象的鄙人来说,理解实在是困难。

今天看了许多CSDN中前辈的博客,以及某鸟教程的文档和MSDN的文档,刚开始其实看不太懂,不明白这个东西为啥一下就触发了。 话不多说,下面我们一起来看一下C#中的事件.

生活中处处有着事件,比如说你肚子饿了,就要去买饭,这个例子中,肚子饿了就是事件,买饭呢就是完成这个事件的过程,那么触发这个事件的就是你的肚子饿,你的肚子不饿是不会触发这个事件的。

例子是非常好理解的,那么来看一下事件的几个要点和声明过程。

1. 声明委托(事件与委托相关联)

2.声明事件(格式:event 返回值类型(委托类型) 事件) 其中event是事件的关键字,并编写实现的函数

3.注册事件或者取消事件 +=或者-=

4.判断条件触发事件(或者不判断)

using System;
public class MainClass
{
public delegate void Good();//声明一个委托,括号里面是可以带参数的,返回值类型也可以不同
class Experiment
{
public event Good Event;//声明了一个事件,返回值是委托类型
public void judge()//判断委托是否为空
{
if (Event != null)
{
Event();//不为空则触发事件
}
else
{
Console.WriteLine("No");
}
}
public void fun()//这个是实现的事件的函数
{
Console.WriteLine("YES");//事件内容
}
}
public static void Main()
{
Experiment e = new Experiment();//实例化
e.Event += new Good(e.fun);//注册了一个事件
//如果在这里重复写了上一行的语句 那么触发事件时会把e.fun这个函数调用2次 可多次+=
e.judge();
}
}
分析:
先看主函数,在主函数中把Experiment这个类实例化,通过访问这个类中的事件名 注册了一个事件,这个事件就是调用方法fun,然后呢访问这个类中的judge判断方法

再看Experiment中的内容,首先访问的就是judge方法,判断Event中是否注册了事件,如果没有那么此时Event是空,则输出NO,然而我们在Main中通过+=注册了一个函         数,判断不为空,Event(); 触发事件。

事件中的内容就是调用fun函数,所以最后的输出结果是YES

总结:

事件在winform中非常重要,比如你做了一个桌面应用的程序,上面有很多按钮,每点击一个按钮触发什么功能都可以用事件来写,还可以连续触发多个功能,在事件中委托也是非常重要的。在做的过程中建议最好判断一下事件内容是否为空,个人感觉看起来舒服一点。

本人也是新手,如文中有任何不适的地方,欢迎提出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#