Was this written in visual studio or a plain old text editor?
I ask this question because vs.net wont compile this code as is.
1. Not sure what this code is trying to do. I suggest you post the
original code to get a proper conversion
2. the delegate is invoked on the "server side", ie, it should be
invoked in the printer class, where it is assigned a value. you may
write a warpper method to invoke the delegate as i have done
try this code - it compiles and prints
Namespace MyDelegate
Public Delegate Sub PrintCallback(ByVal number As Integer)
Public Class Printer
Private _print As PrintCallback
Public Property PrintCallback() As PrintCallback
Get
Return _print
End Get
Set(ByVal Value As PrintCallback)
_print = Value
End Set
End Property
Public Class Driver
Private Sub PrintInteger(ByVal number As Integer)
Console.WriteLine("From PrintInteger: The number is
{0}.", number)
End Sub
Shared Sub main()
Dim oDriver As New Driver()
Dim oPrinter As New Printer()
oPrinter.PrintCallback = AddressOf oDriver.PrintInteger
oPrinter.PrintNumbers()
Console.WriteLine("Press enter to exit...")
Console.ReadLine()
End Sub
End Class
Public Sub PrintNumbers()
Dim num() As Integer = {10, 20, 30}
Dim n As Integer
For Each n In num
_print.Invoke(n)
Next
End Sub
End Class
End Namespace
Billy Jacobs wrote:
Can someone tell me what the problem with this code is.
Specifically the line in all caps near the bottom. I am getting an
error on this line saying: "Property Access must assingn to the property
or use its value". When I do that I get a different error saying: "Expression does not
produce a value"
I took this code and converted it from C# to VB.
Namespace MyDelegate
Public Delegate Sub PrintCallback(ByVal number As Int32)
Public Class Printer
Private _print As PrintCallback
Public Property PrintCallback() As PrintCallback
Get
Return _print
End Get
Set(ByVal Value As PrintCallback)
_print = Value
End Set
End Property
Public Class Driver
Private Sub PrintInteger(ByVal number As Integer)
Console.WriteLine("From PrintInteger: The number is
{0}.", number) End Sub
Shared Sub main()
Dim driver As New Driver()
Dim printer As New Printer()
printer.PrintCallback = New PrintCallback
(AddressOf driver.PrintInteger)
printer.PrintCallback(10)
Console.WriteLine("Press enter to exit...")
Console.ReadLine()
End Sub
End Class
End Class
End Namespace
Billy Jacobs wrote:
Can someone tell me what the problem with this code is.
Specifically the line in all caps near the bottom. I am
getting an error on this line saying:
"Property Access must assingn to the property or use its
value".
When I do that I get a different error saying:
"Expression does not produce a value"
I took this code and converted it from C# to VB.
Namespace MyDelegate
Public Delegate Sub PrintCallback(ByVal number As
Int32)
Public Class Printer
Private _print As PrintCallback
Public Property PrintCallback() As PrintCallback
Get
Return _print
End Get
Set(ByVal Value As PrintCallback)
_print = Value
End Set
End Property
Public Class Driver
Private Sub PrintInteger(ByVal number As
Integer)
Console.WriteLine("From PrintInteger: The
number is {0}.", number)
End Sub
Shared Sub main()
Dim driver As New Driver()
Dim printer As New Printer()
printer.PrintCallback = New PrintCallback
(AddressOf driver.PrintInteger)
printer.PrintCallback(10)
Console.WriteLine("Press enter to exit...")
Console.ReadLine()
End Sub
End Class
End Class
End Namespace