• 委托事件


    委托声明实例化调用

     委托是一个类型,大部分情况声明的和类同级别。偶尔会嵌套在类内部。

    delegate string OneRetOnePar(string p_Name);
    
    #region 简单委托
    OneRetOnePar ornp = new OneRetOnePar(u.GetUserName);
    Console.WriteLine(ornp("藏锋"));
    #endregion
    View Code

    委托可以认为是一个具有相同参数返回值的方法地址集合,返回最后一个方法的返回值。

    多播委托

    委托可以进行

     +=

    -+(匿名方法减不掉)

    维护一个方法列表

    不能begininvok()异步调用

    委托作用和意义

     delegate委托是一个关键字,他编译之后生成的类型继承了MulticastDelegate,而MulticastDelegate继承了类型Delegate.

    委托里面放的是一个方法列表。就是说,可以把逻辑放在委托里面,作为参数参数。实现上下端分离。下端不是面向具体的业务,而是一套通用的框架处理。

     1、异步多线程,都是基于委托的。

    3、封装 扩展 解耦,因为委托是一个类型,用的时候实例化成一个对象,   把一段逻辑封装到已给变量里面,可以把逻辑作为参数传递,达到逻辑拆分,具有扩展性(下端不要写死,上单定制逻辑)。也可以可以达到解耦的作用。最常见的就是linq   where()里面的条件逻辑(委托),

    2、多播委托(不能异步)

    包含了三个方法,基类为多波委托

    异步三个参数  第一个为方法参数 第二个为回调函数(可为NULL)  第三个为状态(可为NULL)

    观察者模式

     事件发布者(就是事件所在的类)

    订户(具体的操作方法)

    订阅(把方法绑定到事件上的动作叫做订阅)

    事件

     事件是委托的一个实例

    委托是一个类型

    从图上可以看出,事件是在委托委托前面加了一个event。

    event只能由声明event的类调用(添加了控制权限)。event关键字控制了委托实例的权限

    中间语言中事件会自动生成两个方法,来操控委托 

    代码下载

  • 相关阅读:
    C语言结构体中的函数指针与函数
    写博客
    图灵C/C++图书阅读路线图
    c语言预处理
    Gnu gprof
    linux下全目录全文搜索强大工具grep
    openssl源代码结构
    js学习笔记——脚本化浏览器窗口
    js学习笔记——js的功能限制
    js学习笔记——在html中嵌入脚本
  • 原文地址:https://www.cnblogs.com/wudequn/p/6733085.html
Copyright © 2020-2023  润新知