zoukankan      html  css  js  c++  java
  • 委托揭秘

    public delegate void Feedback(object value,Int32 item,Int32 numItems);

    当编译器遇到这段代码时,它会产生如下面所示的一个完整的类定义

    public class Feedback : MulticastDelegate

        {

            public Feedback(object target, Int32 methodPro);

            public virtual void Invoke(object value,Int32 item,Int32 numItems)//伪代码

            {

                 //如果链表上包含有任何应该被首先调用的

                //委托,那么将对他们进行递归调用

                if(_prev!=null)

                {

                    _prev.Invoke(value,item,numItems);

                }

                //在指定的目标对象上调用回调方法

                _target.methodPrt(value,item,numItems);

            }

            public virtual IAsyncResult BeginInvoke(object value, Int32 item, Int32 numItems, AsyncCallback callback, object object1);

            public virtual void EndInvoke(IAsyncResult result);

        }

    所以委托可以定义类中,也可以定义一个全局的范围内,因为委托本身就是类


        feedback(object value,Int32 item,Int32 numItems);

        相当于feedback.Invoke(object value,Int32 item,Int32 numItems);

        MulticastDelegate又继承Delegate Delegate有两个参数Target和Method

        Target属性返回一个方法回调时操作的对象引用。

        Method 属性返回一个标识回调方法的System.Reflection.MethodInfo;

  • 相关阅读:
    项目中常用的图片处理方案小结
    Unity2D实现人物三连击
    使用mescroll实现上拉加载与下拉刷新
    iOS中文输入法多次触发的问题及解决方案
    使用WebStorm将项目部署到IIS
    在Less中使用条件判断
    Vue+原生App混合开发手记#1
    在Vue中使用layer.js弹出层插件
    局域网简单的SVN服务器的搭建
    在iOS中实现sticky header
  • 原文地址:https://www.cnblogs.com/gull/p/1858967.html
Copyright © 2011-2022 走看看