Imports System
Public Enum Country
US = 1
CA = 2
End Enum
Public Class AClass
Public Name As String
Public Status As Country
End Class
Public Structure AStruct
Public Name As String
Public Status As Country
End Structure
Public Module Test
Public Sub ChangeName_Obj_ByVal(ByVal details As AClass,ByVal NewName As String)
details.Name = NewName
End Sub
Public Sub ChangeName_Obj_ByRef(ByRef details As AClass,ByVal NewName As String)
details.Name = NewName
End Sub
Public Sub ChangeName_Struct_ByVal(ByVal details As AStruct,ByVal NewName As String)
details.Name = NewName
End Sub
Public Sub ChangeName_Struct_ByRef(ByRef details As AStruct,ByVal NewName As String)
details.Name = NewName
End Sub
Sub Main()
Dim classInstance As AClass = New AClass()
Dim structInstance As AStruct = New AStruct()
classInstance.Name = "A"
classInstance.Status = Country.CA
structInstance.Name = "B"
structInstance.Status = Country.CA
Console.WriteLine("{0}, {1}", classInstance.Name, classInstance.Status)
Console.WriteLine("{0}, {1}", structInstance.Name, structInstance.Status)
Console.WriteLine()
ChangeName_Obj_ByVal(classInstance, "AAAA")
ChangeName_Struct_ByVal(structInstance, "BBBB")
Console.WriteLine("{0},{1}", classInstance.Name, classInstance.Status)
Console.WriteLine("{0},{1}", structInstance.Name, structInstance.Status)
Console.WriteLine()
ChangeName_Obj_ByRef(classInstance, "AAAA")
ChangeName_Struct_ByRef(structInstance, "BBBB")
Console.WriteLine("{0}, {1}", classInstance.Name, classInstance.Status)
Console.WriteLine("{0}, {1}", structInstance.Name, structInstance.Status)
End Sub
End Module
A, CA
B, CA
AAAA,CA
B,CA
AAAA, CA
BBBB, CA