Mega Code Archive

 
Categories / VB.Net / Language Basics
 

Two ways to init a Delegate

Imports System Imports System.Collections Delegate Sub DelegateWithStringSignature(ByVal S As String) Delegate Sub DelegateWithNoParam() public class MainClass    Shared Sub Main()         Dim c As New CalledClass()         Dim o As New OtherCalledClass()         Dim BadObject As New ObjectWithNoWriteMessage()         Dim d1 As DelegateWithStringSignature         Dim Params() As Object = {"DynamicParam"}         ' The two following lines are identical         d1 = New DelegateWithStringSignature(AddressOf c.WriteMessage)         d1.Invoke("Test")         d1.DynamicInvoke(Params)         d1 = AddressOf c.WriteMessage         d1.Invoke("Test")         d1.DynamicInvoke(Params)    End Sub End Class Class CalledClass     Shared Sub SharedMessage(ByVal s As String)         Console.WriteLine("CalledClass.SharedMessage with parameter: " & s)     End Sub     Public Sub WriteMessage(ByVal s As String)         Console.WriteLine("CalledClass WriteMessage method with parameter: " & s)     End Sub End Class Class OtherCalledClass     Sub WriteMessage(ByVal s As String)         Console.WriteLine("OtherCalledClass WriteMessage method with parameter: " & s)     End Sub End Class Class ObjectWithNoWriteMessage     Sub BadWriteMessage()     End Sub End Class