Vb.net 使用Return语句与为函数赋值有什么区别吗?
我只是在工作中浏览我们的代码库,试图清除编译时生成的警告,并且有大量“Function without As子句,clause”警告 返回并将其中大部分更改为Vb.net 使用Return语句与为函数赋值有什么区别吗?,vb.net,Vb.net,我只是在工作中浏览我们的代码库,试图清除编译时生成的警告,并且有大量“Function without As子句,clause”警告 返回并将其中大部分更改为Sub而不是函数,我偶尔会忽略Return语句,因为我只是突出显示方法名称并查找分配给它的值,这在大多数代码中都是这样做的 所以我只是想知道这两者之间是否有区别: Private Function Foo() As String Foo = String.Empty End Function 或: 从功能上看,它似乎是相同的,但我
Sub
而不是函数
,我偶尔会忽略Return
语句,因为我只是突出显示方法名称并查找分配给它的值,这在大多数代码中都是这样做的
所以我只是想知道这两者之间是否有区别:
Private Function Foo() As String
Foo = String.Empty
End Function
或:
从功能上看,它似乎是相同的,但我不确定在编译器如何解释这一点方面是否有任何幕后差异。没有显著差异 但是,我更喜欢使用
Return
,因为它在代码可读性方面更加清晰。当然这是个人喜好
它还提供了踩下另一个同名变量的可能性。主要区别在于
Return
退出函数,而为函数名赋值则不退出。所以这两个等价物应该是
Private Function Foo() As String
Foo = String.Empty
Exit Function
'.....
End Function
或:
就流控制语句而言,它们不一定完全相同,尽管给出的两个示例的行为相同 执行此操作时:
Return String.Empty
Foo = String.Empty
函数退出,函数的结果是提供的值。执行此操作时:
Return String.Empty
Foo = String.Empty
函数的结果是提供的值,但函数不退出。您可以这样做:
Foo = String.Empty
' other logic
Foo = someValue
如果函数在其他逻辑
中的某个位置退出,例如从退出函数
语句退出,则其结果将是字符串。空
,因为这是最后一个设置为结果的值。如果没有,则其结果将是someValue
,因为这将是设置为结果的最后一个值
它们用于类似的目的,从函数返回值。但是,代码的流程(以及随后的可读性)可能会因使用方式的不同而大不相同。哦,很公平,是的。我知道
return
立即存在,我只是不确定在幕后如何处理变量或任何类似的事情。