当前位置:  开发笔记 > 编程语言 > 正文

VB.NET函数返回

如何解决《VB.NET函数返回》经验,为你挑选了4个好方法。

为了从VB.NET函数返回值,可以为"函数名称"赋值或使用"返回值".

我有时会在相同的功能中看到这些混合.就个人而言,我更喜欢回归.

我的问题是,两者之间的内部差异是什么?



1> 小智..:

不同之处在于他们做了不同的事情!

'返回值'有两件事:
1.它设置该点的函数返回值2.它立即退出函数

函数中没有其他代码执行!

'Functionname = value'做了一件事:1.它设置该点的函数返回值

函数中的其他代码继续执行.这使得其他逻辑可以优化或覆盖函数返回值

巨大的差异人群.记住,这不仅仅与国家有关,也与流动有关.


他实际上问过"我的问题是,两者之间的内部差异是什么?

2> TGnat..:

我们来看看......奇怪的是,"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 
}


应该注意,这只是在调试模式下(因此,无关紧要)!在发布模式下,生成相同的代码.
返回与C#兼容,对于更多程序员来说更具可读性,听起来更好

3> StingyJack..:

可能没什么区别.IIRC,编译器生成的IL将它们都转换为Return语句,除非有额外使用_returnValue变量.

在我看来,FunctionName赋值的可读性很差,并且是一个糟糕的VB6习惯的例子.我也更喜欢_returnValue(NOT RETVAL)变量方法.


下面的答案是一个更好的答案
@Jonathan - 关于SO问题的答案并不总是以相同的方式排序.你可以链接到帖子吗?
@StingyJack - 是的,我确定.IL在_trivial examples_中仅相同,并且仅在发布模式下.将执行函数中跟随FunctionName赋值的任何代码,并且函数中跟随Return函数的任何代码都不会执行.这是一个巨大的行为差异,如果后面还有一行代码,那么在发布和调试模式下,IL总是表现为差异.它与两个问题之间的问题高度相关,"两者之间的内部差异是什么?"

4> Tom Anderson..:

仅为Visual Basic 6.0开发人员提供以下功能,以便轻松地将代码移植到:

Public Function MyFunction() As String
    MyFunction = "Hello"
End Function

如果您的项目包括未使用过Visual Basic 6.0的任何人,我绝对不建议继续这样做,因为这种语法会令人困惑.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有