I have some simple code and I understand what it does but not why. I have a Sub
and it calls another Sub
called CheckIfNothing(oList)
. oList
is a List(Of String)
. The Sub
CheckIfNothing
checks each String
and if it it Nothing
it will make it ""
. This is the code:
Public Function GiveList(oList As List(Of String))
CheckIfNothing(oList)
Return oList
End Function
Public Sub CheckIfNothing(oList As List(Of String))
For Each s As String In oList
If s Is Nothing Then
s = ""
End If
Next
End Sub
So in GiveList
I call CheckIfNothing
and I don't return anything from CheckIfNothing
and still, the oList
in GiveList
has no Strings
that are Nothing
.
I always thought you had to return the value you changed in the called function and set the value again in the sub you call the function in like this: oList = CheckIfNothing(oList)
. CheckIfNothing
would be a function in this case.
Why isn't this necessary, and is this only in VB.NET or also the case in C#?