Теперь модель события в Visual Basic.NET выполнена на основе концепции делегатов.
Делегат (delegate) — это объект, который может вызывать объектные методы. Делегат может быть представлен в виде указателей функции, обеспечивающих типовую безопасность. Процесс создания делегатов вручную в VB.NET достаточно прост.
Пример делегата
Delegate Function MyCompareDelegate(ByVal x As Integer, ByVal у As Integer) As Boolean Sub MySub(ByVal MyDelegate as MyCompareDelegate) MyDelegate.Invoke(5,3) End Sub Function CompareLow(ByVal X as Integer, ByVal Y as Integer) as Boolean If X > Y then Return True Else Return False End If End Function Function CompareHigh(ByVal X as Integer, ByVal Y as Integer) as Boolean > If X < Y then Return True Else Return False End If End Function Sub Main() Call MySub(AddressOf Me.CompareLow) Call MySub(AddressOf Me.CompareHigh) End Sub
В большинстве случаев вручную создавать делегаты не нужно — все сделает VB.NET. Класс делегата, называемый <EventName>EventHandler, позволяет неявно определить оператор Event. Класс делегата является вложенным классом по отношению к тому классу, в котором содержится оператор Event. Сигнатура класса практически ничем не отличается от сигнатуры события.