当前位置:  开发笔记 > 编程语言 > 正文

如何在VB.Net中声明lambda事件处理程序?

如何解决《如何在VB.Net中声明lambda事件处理程序?》经验,为你挑选了2个好方法。



1> svick..:

对于那些现在发现这个问题的人:自Visual Basic 2010(VB 10.0)以来,匿名Subs确实有用,所以你可以这样写:

Sub() eventRaised = True


@LeiYang然后,您可以执行以下操作:Sub()statement1 statement2 End Sub(四行)。

2> Gareth D..:

注意:这与Visual Studio 2010和VB.net 10之前的旧版VB.net有关

区别在于,在VB.Net中,lambda表达式必须返回一个值,即它们必须是函数而不是subs.lambda表达式eventRaised = true被解释为布尔表达式而不是赋值,即评估为false而不是设置为true.

有关MSDN的更多详细信息.

我不认为用于测试示例中的事件的c#模式可以在VB.Net中完成而不引入另一个函数,例如

 _
Public Class Test
     _
    Public Sub EventTest()
        Dim eventClass As New EventClass
        Dim eventRaised As Boolean = False
        AddHandler eventClass.AnEvent, Function() (SetValueToTrue(eventRaised))
        eventClass.RaiseIt()
        Assert.IsTrue(eventRaised)
    End Sub

    Private Function SetValueToTrue(ByRef value As Boolean) As Boolean
        value = True
        Return True
    End Function

End Class

Public Class EventClass
    Public Event AnEvent()
    Public Sub RaiseIt()
        RaiseEvent AnEvent()
    End Sub
End Class


他们真的在VB.Net中使用lambdas.
请注意,从VS2010开始,VB.Net lambdas现在可能是子例程,无需返回值.
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有