C#学习笔记 事件

事件

  1. 事件是什么
    事件是基于委托的存在
    事件是委托的安全包裹
    让委托的使用更具有安全性
    事件 是一种特殊的变量类型

  2. 事件的使用
    申明语法:
    访问修饰符 event 委托类型 事件名;
    事件的使用:
    1.事件是作为 成员变量存在于类中
    2.委托怎么用 事件就怎么用
    事件相对于委托的区别:
    1.不能在类外部 赋值
    2.不能再类外部 调用
    注意:
    它只能作为成员存在于类和接口以及结构体中

class Test
    {
        //委托成员变量 用于存储 函数的
        public Action myFun;
        //事件成员变量 用于存储 函数的
        public event Action myEvent;

        public Test()
        {
            //事件的使用和委托 一模一样 只是有些 细微的区别
            myFun = TestFun;
            myFun += TestFun;
            myFun -= TestFun;
            myFun();
            myFun.Invoke();
            myFun = null;

            myEvent = TestFun;
            myEvent += TestFun;
            myEvent -= TestFun;
            myEvent();
            myEvent.Invoke();
            myEvent = null;
        }

        public void DoEvent()
        {
            if(myEvent != null)
            {
                myEvent();
            }
        }

        public void TestFun()
        {
            Console.WriteLine("123");
        }
}
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("事件");

            Test t = new Test();
            //委托可以在外部赋值
            t.myFun = null;
            t.myFun = TestFun;
            t.myFun = t.myFun + TestFun;
            t.myFun += TestFun;
            //事件是不能再外部赋值的
            //t.myEvent = null;
            //t.myEvent = TestFun;
            //虽然不能直接赋值 但是可以 加减 去添加移除记录的函数
            t.myEvent += TestFun;
            t.myEvent -= TestFun;

            //委托是可以在外部调用的
            t.myFun();
            t.myFun.Invoke();
            //事件不能再外部调用
            //t.myEvent();
            //只能在类的内部去封装 调用
            t.DoEvent();

            Action a = TestFun;
            //事件 是不能作为临时变量在函数中使用的
            //event Action ae = TestFun;
        }

        static void TestFun()
        {

        }
    }

  1. 为什么有事件
    1.防止外部随意置空委托
    2.防止外部随意调用委托
    3.事件相当于对委托进行了一次封装 让其更加安全

总结
事件和委托的区别
事件和委托的使用基本是一模一样的
事件就是特殊的委托
主要区别:
1.事件不能再外部使用赋值=符号,只能使用+ - 委托 哪里都能用
2.事件 不能再外部执行 委托哪里都能执行
3.事件 不能作为 函数中的临时变量的 委托可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值