C#事件

一、事件是个什么鬼?有什么卵用?

事件其实就是一个特殊的委托,对事件的声名其实就是声明一个私有的委托变量
你先把什么是委托搞清楚,就知道委托和事件的关系了

事件就是对象之间通信的一种机制。
在面向对象的编程语言中,任何一个对象都可以有相应的事件。
例如:鼠标单击事件、鼠标移动事件、按钮单击事件等等。在按钮单击事件中,是鼠标对象向按钮对象发出的一个消息,所以就是鼠标和按钮两个对象通信的一种机制。

事件起到的作用我就用实际中的操作来表述下,希望你能明白。
事件有很多种:比如常用的有鼠标单击事件,鼠标移动事件,页面加载事件等等。
事件的作用就是来帮你完成任务,完成你想做得事。其实你只要明白如何运用事件就行,具体的概念比较抽象,一时也说不上来,你可以网上去查查,应该能查到。
比如鼠标单击事件:当你单击鼠标后肯定要发生某件事,比如弹出窗口,刷新页面,或者提交数据等。这时候就会触发鼠标单击事件,而你把你要做得事(程序中指方法当然也包括属性)写在该事件里,通过该事件来完成你想做得。
事件都是相对应的,比如说鼠标单击事件只有你在单击鼠标的时候才会触发,这时候才会执行该事件里的方法。

比如页面加载事件也就是说当页面加载的时候才会触发该事件。

或者参见某乎某答主回答:
https://www.zhihu.com/question/21638630

二、使用事件有啥需要注意的地方?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


//1、event和delegate的关系就好像字段和属性的关系
//2、event会限制delegate,不能够直接赋值操作,放置将委托替换掉,只能使用+=或-=来绑定或者解除绑定
//3、event还限定了delegate只能在定义的类中被调用

namespace learning
{
    public delegate void Something(string name);

    public class Student {

        // 事件 Event 就是delegate的“属性”
        public event Something something;
        public void Do() {
            something(name);
        }

        public Student(string name) {
            this.name = name;
        }

        private string name;

    }

    public class Teacher
    {
        public void Hungry() {
            Student s = new Student("老王");

            // 使用了 event 之后就不能够直接给委托赋值,必须使用 +=、-=来绑定/解绑
            s.something += new Something(A);

            // 同时使用了 event 之后就不能够在 Student 外调用委托
            //s.something("老张");不可以

            s.Do();
        }

        public void A(string name) {
            Console.WriteLine("hello ," + name);
        }
    }

    class Program{

        public static void Main(string[] args)
        {
            Teacher t = new Teacher();
            t.Hungry();
        }
    }
}

这里写图片描述

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载,详情访问:happysneaker.com https://blog.csdn.net/Cody_Ren/article/details/79965858
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭