在 Visual Basic 中通过引用创建一个 returns 的函数

Making a function that returns by reference in Visual Basic

所以,假设,如果我要尝试在两个数字之间编写某种“GetMax”函数,并且我想 return 通过引用获取两个中最大的一个,那么我可以编辑说 return 直接从函数调用中编辑引用变量。

所以在 CPP 中它可能看起来像这样:

int& GetMax(int& a, int& b)
{
    if (a > b) {
        return a;
    }
    else {
        return b;
    }
}

我可以这样编辑它:

int main(void)
{
    int a = 30;
    int b = 20;

    GetMax(a, b) = 10;

}

GetMax(a, b) = 10; 会改变 a 的值。

我可以在 Visual Basic 中做类似的事情吗?

Function GetMax(ByRef a As Integer, ByRef b As Integer) As Integer

    If a > b Then
        Return a
    Else
        Return b
    End If

End Function

^ 但它不是 return 值,而是 return 引用,因此我可以像在 CPP 示例中那样处理函数。我并没有真正致力于学习 visual basic,所以我真的不知道我是否完全错过了一个关键概念,它可以让我做我想做的事情。 谢谢 ! :)

问题是 VB.NET 不希望您编写 cpp 风格的程序。因此,虽然复杂对象始终是引用,但主要对象不是。如果你想编辑子中的主要类型,你可以将 ByRef myVariable as Integer (或任何其他主要类型)放在你的重载中,它可以作为参考,但你将无法 return 它作为参考。

对于复杂的对象,没问题。对于初选,忘记这一点。

C# could do it, though, if it's the same to you.

答案是否定的,因此您必须执行类似的操作才能在您提供的示例中获得相同的结果:

Sub SetMax(ByRef a As Integer, ByRef b As Integer, value As Integer)

    If a > b Then
        a = value
    Else
        b = value
    End If

End Sub

并调用:

SetMax(a, b, 10)