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

  • 相关阅读:
    在CentOS 6上安装Apache和PHP
    花10分钟看一看,少走30年的弯路
    IOS开发之UITabBarController与UINavigationController混合使用
    重构tableview!
    初学IOS之TableView
    关于mac下配置mysql心得
    类,对象,方法的
    shell脚本
    关于我
    机器学习&深度学习视频资料汇总
  • 原文地址:https://www.cnblogs.com/hzb2001/p/2093835.html
Copyright © 2011-2022 走看看