我有这个VB.net代码片段,我想弄清楚它为什么是合法的:
Class Program
Public Shared Sub Main(args As String())
Console.WriteLine(New wtf().TestCrazyAssignment())
Console.ReadKey()
End Sub
Class wtf
Public recurse As int32 = 0
Public Function TestCrazyAssignment() As string
TestCrazyAssignment = "this should not be possible."
'BadAllocation = "something" 'compiler error - did not define with Dim
recurse = recurse + 1
Console.WriteLine(TestCrazyAssignment)
If recurse < 10 Then
TestCrazyAssignment()
End If
Return "umm.... ok."
End Function
End Class
End Class
输出:
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
this should not be possible.
umm.... ok.
在我琐碎的例子中,我想阻止无限递归,但你明白了。
有没有人对此有一些见解?我最近在生产代码中点击了这个。
答案 0 :(得分:8)
这是设置函数返回值的传统VB方法。 VB生成一个未声明的局部变量,其名称与函数名称相同。 我强烈建议不要使用显式返回语句。
(如果您不通过标准'Return'退出,则会自动返回未声明变量中的值。