Reputation: 427
In VB.NET functions you can return values in two ways. For example if I have a function called "AddTwoInts" which takes two int variables as parameters, add them together and return the value I could write the function either as one of the following.
1) "Return":
Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
Return (intOne + intTwo)
End Function
2) "Function = value":
Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
AddTwoInts = (intOne + intTwo)
End Function
My question is this: is there any difference between the two or a reason to use one over the other?
Upvotes: 8
Views: 1877
Reputation: 11773
In your example there is no difference between the two. The only real reason for choosing the first is that it is similar to other languages. Other languages don't support the second example.
As has been pointed out, the assignment to the function name does not cause a return from the function.
The IL generated by the two examples will be identical.
Upvotes: 0
Reputation: 22157
In your example, there's no difference. However, assignment operator doesn't really exit the function:
Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
Return (intOne + intTwo)
Console.WriteLine("Still alive") ' This will not be printed!
End Function
Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
AddTwoInts = (intOne + intTwo)
Console.WriteLine("Still alive") ' This will be printed!
End Function
Please don't use the second form, as it is the old language feature inherited from VB6 in order to help migration.
Upvotes: 13