VB.NET中“FunctionName = value”和“Return value”的区别?

Posted

技术标签:

【中文标题】VB.NET中“FunctionName = value”和“Return value”的区别?【英文标题】:Difference between "FunctionName = value" and "Return value" in VB.NET? 【发布时间】:2013-09-20 12:41:01 【问题描述】:

在 VB.NET 函数中,您可以通过两种方式返回值。例如,如果我有一个名为“AddTwoInts”的函数,它接受两个 int 变量作为参数,将它们相加并返回值,我可以将函数编写为以下之一。

1) “返回”:

Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
    Return (intOne + intTwo)
End Function

2)“功能=价值”:

Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
    AddTwoInts = (intOne + intTwo)
End Function

我的问题是:两者之间有什么区别,或者有理由使用一个而不是另一个?

【问题讨论】:

msdn.microsoft.com/en-us/library/6xxtk8kx.aspx 【参考方案1】:

在您的示例中,没有区别。但是,赋值运算符并没有真正退出函数:

Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
    Return (intOne + intTwo)
    Console.WriteLine("Still alive") ' This will not be printed!
End Function


Function AddTwoInts(ByVal intOne As Integer, ByVal intTwo As Integer) As Integer
    AddTwoInts = (intOne + intTwo)
    Console.WriteLine("Still alive") ' This will  be printed!
End Function

请不要使用第二种形式,因为它是从 VB6 继承的旧语言功能,以帮助迁移。

【讨论】:

【参考方案2】:

您的示例中,两者没有区别。选择第一种的唯一真正原因是它与其他语言相似。其他语言不支持第二个示例。

正如已经指出的,对函数名的赋值不会导致函数返回。

两个示例生成的 IL 将是相同的。

【讨论】:

以上是关于VB.NET中“FunctionName = value”和“Return value”的区别?的主要内容,如果未能解决你的问题,请参考以下文章

vb.net 里面如何判断某个值存在一个数组中?

VB.NET中DataGridView谁帮忙?

vb6中的RtlMoveMemory ByVal a,在vb.net中应如何表达?

vb.net中怎么使用createobject添加类呢,就好像vb中一样

VB.NET怎么安装

vb.net中怎样求DataGridView的行数和列数?