在 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 它作为参考。
对于复杂的对象,没问题。对于初选,忘记这一点。
答案是否定的,因此您必须执行类似的操作才能在您提供的示例中获得相同的结果:
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)
所以,假设,如果我要尝试在两个数字之间编写某种“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 它作为参考。
对于复杂的对象,没问题。对于初选,忘记这一点。
答案是否定的,因此您必须执行类似的操作才能在您提供的示例中获得相同的结果:
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)