为了从VB.NET函数返回值,可以为"函数名称"赋值或使用"返回值".
我有时会在相同的功能中看到这些混合.就个人而言,我更喜欢回归.
我的问题是,两者之间的内部差异是什么?
不同之处在于他们做了不同的事情!
'返回值'有两件事:
1.它设置该点的函数返回值2.它立即退出函数
函数中没有其他代码执行!
'Functionname = value'做了一件事:1.它设置该点的函数返回值
函数中的其他代码继续执行.这使得其他逻辑可以优化或覆盖函数返回值
巨大的差异人群.记住,这不仅仅与国家有关,也与流动有关.
我们来看看......奇怪的是,"functionName ="会产生更少的IL?
码:
Public Function Test() As String Test = "Test" End Function Public Function Test2() As String Return "Test" End Function
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 }
可能没什么区别.IIRC,编译器生成的IL将它们都转换为Return语句,除非有额外使用_returnValue变量.
在我看来,FunctionName赋值的可读性很差,并且是一个糟糕的VB6习惯的例子.我也更喜欢_returnValue(NOT RETVAL)变量方法.
仅为Visual Basic 6.0开发人员提供以下功能,以便轻松地将代码移植到:
Public Function MyFunction() As String MyFunction = "Hello" End Function
如果您的项目包括未使用过Visual Basic 6.0的任何人,我绝对不建议继续这样做,因为这种语法会令人困惑.