如何在不包装的情况下强制将Integer类型用作引用类型?

时间:2018-12-30 21:20:29

标签: vb.net object types pass-by-reference reference-type

我正在尝试通过引用将变量分配给另一个变量,以便更改一个值将更改两个值,如该伪代码示例所示:

Dim x as Integer = 0
Dim y as Integer = x [byRef] 
x = 1
Debug.print("x = " & x)
Debug.print("y = " & y)
'should print x = 1, y = 1

但是当然,它会打印x = 1,y = 0,因为默认情况下Integer是Value类型。所以问题是,如何强制通过引用将y赋给x?我知道对象是引用类型,所以我尝试了y = Cobj(x),但是没有用。我想这样做而无需包装(很想解释原因,但是我不能在这里使用包装)。任何人都可以提出任何建议吗?

编辑:我忘了提到我在VB.NET中进行编码。

1 个答案:

答案 0 :(得分:0)

您不能使整数类型在vb中保留引用。它将始终保存一个值,而不是对另一个对象的引用。但是,可以通过引用函数或子例程来传递整数变量,以便函数或子例程可以修改值。这是一个示例:

Sub Main()
    Dim x As Integer = 0

    PassByValue(x)
    Debug.Print("x = " & x) 'Prints x = 0

    PassByReference(x)
    Debug.Print("x = " & x) 'Prints x = 2
End Sub

Sub PassByValue(x As Integer)
    x = 2
End Sub

Sub PassByReference(ByRef x As Integer)
    x = 2
End Sub