다음 VB.Net 코드는 진행중인 C# 코드와 동일하다고 생각합니다. 그러나 VB.Net 테스트는 실패합니다. Lambda를 호출하는 이벤트는 호출되지 않습니다.VB.Net에서 람다 이벤트 처리기를 선언하는 방법?
무슨 일입니까?
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();
}
}
그들은 VB.Net에서 lambdas로 정말 멋지게 꾸며 냈습니다. – chrissie1
동의, 그들은 링크가 가고 최소한의 것 같았어요. –
VS2010 현재 VB.Net 람다는 서브 루틴이 될 수 있으므로 값을 반환 할 필요가 없습니다. –