zoukankan      html  css  js  c++  java
  • 委托

    Public Class Form1

        '定义委托
        Private Delegate Sub MyMsg(ByVal str As String)

        '实现委托,方法签名与前面定义的委托相同
        Private Sub showmsg(ByVal str As String)
            MessageBox.Show(str & " from showmsg")
        End Sub

        '实现另一个委托,,方法签名与前面定义的委托相同
        Private Sub shownamemsg(ByVal str As String)
            MessageBox.Show(str & ",Phoenix" & " from shownamemsg")
        End Sub

       '使用委托, 把调用哪个方法的权利下放到执行代码那里
        Private Sub showinfo(ByVal dd As MyMsg, ByVal str As String)
            dd(str)
            '在vb中支持调用invoke
            'dd.Invoke(str)
        End Sub

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            '采用了简写形式. 完整形式应该是
            'showinfo(New MyMsg(AddressOf showmsg), "Hello")
            showinfo(AddressOf showmsg, "Hello")

       

         '采用了简写形式.完整形式应该是
            'showinfo(New MyMsg(AddressOf shownamemsg), "Hello")
            showinfo(AddressOf shownamemsg, "Hello")

           '委托链表. 依次调用委托链上的每个方法. 注意此处不能采用简写形式
            '以下为错误写法
            'showinfo([Delegate].Combine(AddressOf showmsg, AddressOf shownamemsg), "Hello")
            showinfo([Delegate].Combine(New MyMsg(AddressOf showmsg), New MyMsg(AddressOf shownamemsg)), "Hello")

       

         '用lambda函数代替委托
            showinfo(Sub(str) MessageBox.Show(str & " from lambda"), "Hello")

        End Sub


    End Class

  • 相关阅读:
    js-格式化数字保留两位小数-带千分符
    java-byte[]图片在页面展示
    bootstrap-fileupload-上传文件控件
    css-让div永远在最底部
    hibernate-DetachedCriteria实现关联表条件复查
    eclipse-搭建maven的war项目集合spring注解方式
    spring-注解
    eclipse-mvn打包跳过junit测试类
    Spring-注解控件介绍
    java-读取类中的属性名称和值
  • 原文地址:https://www.cnblogs.com/hzb2001/p/2093835.html
Copyright © 2011-2022 走看看