我只是在工作中浏览我们的代码库,尝试清除编译时生成的警告,并且有大量"函数没有As子句,子句"警告.
虽然返回并将其中的大多数更改为a Sub
而不是a Function
,但我偶尔会忽略一个Return
语句,因为我只是突出显示方法名称并查找分配给它的值,这是在大多数代码中完成的.
所以我只是想知道这些之间是否有任何区别:
Private Function Foo() As String
Foo = String.Empty
End Function
Run Code Online (Sandbox Code Playgroud)
要么:
Private Function Foo() As String
Return String.Empty
End Function
Run Code Online (Sandbox Code Playgroud)
在功能上,它似乎是相同的,但我不确定在编译器如何解释这个问题时是否存在任何幕后差异.
主要区别在于,Return
在为函数名称赋值时不退出函数.所以两个等价物应该是
Private Function Foo() As String
Foo = String.Empty
Exit Function
'.....
End Function
Run Code Online (Sandbox Code Playgroud)
要么:
Private Function Foo() As String
Return String.Empty
'.....
End Function
Run Code Online (Sandbox Code Playgroud)