zoukankan      html  css  js  c++  java
  • 委托

    委托是一种数据类型。
    只有委托这种数据类型才能保存方法变量。既然是数据类型,就可以通过该数据类型声明变量。
    不同类型的方法(参数不同,返回值不同),需要使用不同的委托类型来存储,所以
    不同类型的方法需要自定义不同类型的委托,就像需要定义不同的类来存储不同对象一样。
    委托是不存在重载的
    同一个方法则可以使用同一个“委托类型”来存储。
    一般委托也直接写在命名空间下,与类是同一个级别的东西。
    定义委托的时候,需要制定该委托类型将来要存储的方法的返回值与参数列表。
    制定后,该委托类型就只能存储


    需要我们弄清楚的是:
    委托变量并不是方法,所以不能直接调用。
    要想调用委托中保存的方法,需要通过委托变量Invoke来调用
    委托的意义,增加了代码的灵活性和可扩展性。“代码注入”作用。
    建议在调用委托变量的时候先判断一下是否为null


    匿名函数的写法:M2Delegate  md=delegate(int  x)
    {
       Return x*100;}
    Int result=md(100);


    Lambda表达式使用=>()=》左边是方法,右边是表达式。


    委托和字符串的特征特别像,而且具有不可变性。
    委托每次累加的时候都会创建一个新对象。
    多播委托时根据 +,—来控制。
    Delegate是所有委托的父类。
    一个一个调用多播委托中的方法,
    Delegate[]  method=md.GetInvocation();
    Foreach[Delegate item  in methods]
    {
      MyreturnIntDelegate  mrid=itme ad MyreturnIntDelegate()
      console.writeLine(mirid())}
    泛型委托。
    泛型委托的意义:
    系统中有两个委托Action和Func
    委托的本质:
    每个委托都有invocationList字段,多播委托中的东西都放在这个字段当中了。
    委托的一些应用:凡是需要回调的地方都能用到委托。

  • 相关阅读:
    一张图搞定OAuth2.0
    OAuth2.0的refresh token
    ACCESS_TOKEN与FRESH_TOKEN
    关于token和refresh token
    如何解决前后端token过期问题
    对外开放的接口验证方式
    python api接口认证脚本
    Python Thrift 简单示例
    整数中1出现的次数(从1到n整数中1出现的次数)
    连续子数组的最大和
  • 原文地址:https://www.cnblogs.com/hanwenhuazuibang/p/2964141.html
Copyright © 2011-2022 走看看