Как я могу заставить тип Integer использоваться в качестве ссылочного типа без переноса? - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь присвоить переменную другой переменной по ссылке, чтобы изменение значения одного изменило значение обоих, как в этом примере псевдокода:

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 голосов
/ 31 декабря 2018

Нельзя сделать так, чтобы целочисленный тип содержал ссылку в 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
...