首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VB.NET函数返回

VB.NET函数返回
EN

Stack Overflow用户
提问于 2009-01-16 16:31:33
回答 8查看 79.5K关注 0票数 29

为了从VB.NET函数返回值,可以给“函数名”赋值或使用“返回值”。

我有时会在同一个函数中看到这些混合在一起。就我个人而言,我更喜欢回报。

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-01-16 16:34:50

这可能没有区别。IIRC,编译器生成的IL将它们都转换为返回语句,除非有额外的_returnValue变量的用法。

在我看来,FunctionName赋值的可读性很差,这是一个坏的VB6习惯的例子。我也更喜欢_returnValue (不是RETVAL)变量方法。

票数 16
EN

Stack Overflow用户

发布于 2010-06-17 03:37:48

不同的是他们做了不同的事情!

“'Return”做了两件事:

  1. 它设置该点的函数返回值2.它会立即退出

函数

函数中的任何代码都不会执行!

‘'Functionname = value’做一件事: 1.它在那个点设置函数的返回值

函数中的其他代码将继续执行,这使其他逻辑能够优化或覆盖函数返回值

差别很大,伙计们。记住,这并不全是关于状态的,它也是关于流程的。

票数 52
EN

Stack Overflow用户

发布于 2009-01-16 16:55:15

我们来看看..。奇怪的是,"functionName =“产生的IL更少?

代码:

代码语言:javascript
运行
复制
Public Function Test() As String
    Test = "Test"
End Function


Public Function Test2() As String
    Return "Test"
End Function

IL:

代码语言:javascript
运行
复制
.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 
}
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/451025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档