• 委托和事件


    这个主题是关于委托的。

    一、委托是什么?

    委托是用delegate定义的函数指针(其实并不只是一个指针,而是包含一组相关数据)。委托类型定义委托变量,委托变量可以用“函数名”、匿名函数和lambda赋值。而委托变量可以调用该函数。

    二、事件是什么?

    事件是对委托的封装,类似属性对字段的封装。

    事件施加的限制是:一、规定委托的类型,void (Object, EventArgs 或其子类 );二、对外只提供增加关联函数+= 操作和减少关联函数-=操作,而没有提供获取该委托变量的接口,防止任意修改。

    只需要在定义委托变量前面加event 关键字就定义了事件,标准事件的委托是EventHandler<T>。编译器会自动生成相关的包装代码。但是也可以自定义包装代码:

    event 委托类型 事件名{ add{} remove{} }

    三、运用委托

    第一步是定义委托类型,第二步定义委托变量,第三步执行委托。

    1. int delegate myFunc(int, int);

    2. myFunc f1, f2;           

    f1 = (x,y)=>x+y;

    f2 = delegate(int x, int y){return x * y;};

    3. f1(1,2); //==3

       f2(1,2);//==2

    委托的运用场合:当你需要传递参数给某个过程时,可以是选择特定的算法,也可以是通知对象去处理。

    事件就是通知对象处理消息这个用途。消息发布者定义事件(委托),而订阅者绑定事件处理函数,当发布者决定引发事件时,就通过调用绑定了的事件处理函数执行相关操作。

    发布者不需要了解事件怎么处理,由谁处理,只需要决定引发事件的时机;而订阅者不需要了解事件是怎么发生的,只需要简单关联并提供处理方案。

  • 相关阅读:
    JavaScript的BOM编程,事件-第4章
    C#获取程序目录
    e3商城_day05
    第三届中国云计算用户大会笔记和心得
    Android应用源码 概览
    电脑用bat脚本给手机批量自动安装apk文件 autoInstall.bat
    网上的很多Android项目源码有用吗?Android开发注意的地方。
    Android 简历 怎么写? 月薪10K,20K+, 怎么拿到面试?
    android 职业 转行
    我的Python学习之路(2)
  • 原文地址:https://www.cnblogs.com/Nobel/p/2798641.html
Copyright © 2020-2023  润新知