Creo que el siguiente código VB.Net es el equivalente al código C# anterior; sin embargo, falla la prueba VB.Net: nunca se llama al evento que maneja Lambda.¿Cómo declarar los controladores de eventos lambda en VB.Net?
¿Qué está pasando? Versión
VB.Net - falla:
<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# versión - pases:
[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();
}
}
Realmente chillaban con lambdas en VB.Net. – chrissie1
De acuerdo, parece que hicieron lo mínimo para poner el enlace en marcha y eso fue todo. –
Tenga en cuenta que a partir de VS2010 las lambdas VB.Net ahora pueden ser subrutinas y no necesitan devolver un valor. –