使用Return语句与为函数赋值之间有什么区别吗?

sab*_*669 6 vb.net

我只是在工作中浏览我们的代码库,尝试清除编译时生成的警告,并且有大量"函数没有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)

在功能上,它似乎是相同的,但我不确定在编译器如何解释这个问题时是否存在任何幕后差异.

Bla*_*ood 6

主要区别在于,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)