设置通过引用传递的整数的值

Set the value of an integer passed by reference

我想知道如何设置通过引用传递的变量的值。在这个例子中,我传递了一个整数,但在应用程序中,它可能是一个不同的对象。

无论如何,这是对正在发生的事情的简短总结:

  1. 程序从 Sub Main() 开始,并引发了一个新的表单实例。表单的构造函数是一个 ByRef 参数。
  2. 执行 New() sub 时,此参数保存在表单实例的私有成员中。
  3. 用户按下一个按钮,为该私有成员分配一个值。
  4. 为什么原来的结果也没有改变? (它仍然是 0 而不是 5555)

代码示例:

Option Strict On

Public Class SpecialForm
    Inherits System.Windows.Forms.Form
    Private WithEvents _Btn As System.Windows.Forms.Button = Nothing
    Private _Result As Integer
    Public Sub New(ByRef Out_Result As Integer)
        _Result = Out_Result
    End Sub
    Private Sub SpecialForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        _Btn = New System.Windows.Forms.Button
        With _Btn
            'Set size
            'Set location
            'Set text
            'etc
        End With
        Me.Controls.Add(_Btn)
    End Sub
    Private Sub Btn_Click(sender As Object, e As System.EventArgs) Handles _Btn.Click
        _Result = 5555
        Me.Close()
    End Sub
End Class

Module EntryPoint
    Public Sub Main()
        Dim result As Integer
        Using mySpecialForm As New SpecialForm(result)
            mySpecialForm.ShowDialog()
        End Using
        MsgBox(String.Format("The result is {0}", result)) 'DEBUG MESSAGE
    End Sub
End Module

可能是我做错了,也可能是语言的限制。但是有什么办法可以不使用全局变量来做到这一点吗?

语句_Result = Out_Result存储Out_Result的值而不是它的地址。 您应该使用 class 的实例,例如:

Class MyData
    public value as integer
End Class

您可以执行以下操作:

_Result.value = 5555