gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:38:00 27 4
gpt4 key购买 nike

我相信下面的 VB.Net 代码等同于前面的 C# 代码;然而,VB.Net 测试失败了——从未调用事件处理 Lambda。

这是怎么回事?

VB.Net 版本 - 失败:

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

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

C# 版本 - 通过:

[TestFixture]
public class TestClass
{
[Test]
public void EventTest()
{
var eventClass = new EventClass();
var eventRaised = false;
eventClass.AnEvent += () => { eventRaised = true; };
eventClass.RaiseIt();
Assert.IsTrue(eventRaised);
}
}

public class EventClass
{
public delegate void EventHandler();
public event EventHandler AnEvent;
public void RaiseIt()
{
AnEvent();
}
}

最佳答案

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

Sub() eventRaised = True

关于c# - 如何在 VB.Net 中声明 lambda 事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com