use*_*612 25 vb.net return function
为了从VB.NET函数返回值,可以为"函数名称"赋值或使用"返回值".
我有时会在相同的功能中看到这些混合.就个人而言,我更喜欢回归.
我的问题是,两者之间的内部差异是什么?
小智 52
不同之处在于他们做了不同的事情!
'返回值'有两件事:
1.它设置该点的函数返回值2.它立即退出函数
函数中没有其他代码执行!
'Functionname = value'做了一件事:1.它设置该点的函数返回值
函数中的其他代码继续执行.这使得其他逻辑可以优化或覆盖函数返回值
巨大的差异人群.记住,这不仅仅与国家有关,也与流动有关.
TGn*_*nat 17
我们来看看......奇怪的是,"functionName ="会产生更少的IL?
码:
Public Function Test() As String
Test = "Test"
End Function
Public Function Test2() As String
Return "Test"
End Function
Run Code Online (Sandbox Code Playgroud)
IL:
.method public static string Test() cil managed
{
.maxstack 1
.locals init (
[0] string Test)
L_0000: nop
L_0001: ldstr "Test"
L_0006: stloc.0
L_0007: ldloc.0
L_0008: ret
}
.method public static string Test2() cil managed
{
.maxstack 1
.locals init (
[0] string Test2)
L_0000: nop
L_0001: ldstr "Test"
L_0006: stloc.0
L_0007: br.s L_0009
L_0009: ldloc.0
L_000a: ret
}
Run Code Online (Sandbox Code Playgroud)
Sti*_*ack 14
可能没什么区别.IIRC,编译器生成的IL将它们都转换为Return语句,除非有额外使用_returnValue变量.
在我看来,FunctionName赋值的可读性很差,并且是一个糟糕的VB6习惯的例子.我也更喜欢_returnValue(NOT RETVAL)变量方法.
仅为Visual Basic 6.0开发人员提供以下功能,以便轻松地将代码移植到:
Public Function MyFunction() As String
MyFunction = "Hello"
End Function
Run Code Online (Sandbox Code Playgroud)
如果您的项目包括未使用过Visual Basic 6.0的任何人,我绝对不建议继续这样做,因为这种语法会令人困惑.