• 委托理解


    由来:

    首先我们有普通函数 string StringProcess(string s){}

    如果想把此方法当作参数进行传递,如 void M4(StringProcess method,string str){  method(str);},这时候就需要一个类型来存储这个方法,于是就有了新的类型:委托,

    声明委托方式:public delegate string StringProcess(string s);

    存储什么样的方法就声明什么类型(方法参数与返回值)的委托。委托是一种数据类型,像类一样,如果要用的话还要声明委托类型的变量。将委托类型变量指向函数 StringProcess sp = new StringProcess(SayHello),也可以简化成StringProcess sp = SayHello,这样就可以像调用普通函数一样把sp当成函数用了。

    整数可以用整数变量指向它,对象可以用对象变量指向它,函数也可以用委托变量指向它。
    使用委托和直接调用函数的区别:用委托就可以指向任意的函数,哪怕是之前没定义的都可以。
     
    委托的本质:
    委托都继承自System.MulticastDelegate,而System.MulticastDelegate又继承自System.Delegate
    多播委托(MulticastDelegate):有一个委托数组,依次调用。
    委托( System.MulticastDelegate )的3个重要成员:
    其中_methodPtr、_target来自Delegate类,_invocationList来自MulticastDelegate类,实际上是Delegate[]类型。
     
     
    委托的作用:
    •占位,在不知道将来要执行的方法的具体代码时,可以先用一个委托变量来代替方法调用(委托的返回值,参数列表要确定)。在实际调用之前,需要为委托赋值,否则为null。
     
     
     
  • 相关阅读:
    IIS 下配置无后缀的URL ReWrite
    获得代理IP或客户端Ip
    asp.net发送邮箱
    URLRewrite伪静态与AspNetPager分页控件的结合
    邮箱大全
    注册表单验证正则表达式
    aspx中伪静态的实现
    JMail发送邮件
    IE 6中负的margin值导致出界部分不显示问题的解决
    Culminis为每个用户组提供的免费TechNet Plus Direct订阅
  • 原文地址:https://www.cnblogs.com/chay1227/p/2973553.html
Copyright © 2020-2023  润新知