设置通过引用传递的整数的值
Set the value of an integer passed by reference
我想知道如何设置通过引用传递的变量的值。在这个例子中,我传递了一个整数,但在应用程序中,它可能是一个不同的对象。
无论如何,这是对正在发生的事情的简短总结:
- 程序从 Sub Main() 开始,并引发了一个新的表单实例。表单的构造函数是一个 ByRef 参数。
- 执行 New() sub 时,此参数保存在表单实例的私有成员中。
- 用户按下一个按钮,为该私有成员分配一个值。
- 为什么原来的结果也没有改变? (它仍然是 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
我想知道如何设置通过引用传递的变量的值。在这个例子中,我传递了一个整数,但在应用程序中,它可能是一个不同的对象。
无论如何,这是对正在发生的事情的简短总结:
- 程序从 Sub Main() 开始,并引发了一个新的表单实例。表单的构造函数是一个 ByRef 参数。
- 执行 New() sub 时,此参数保存在表单实例的私有成员中。
- 用户按下一个按钮,为该私有成员分配一个值。
- 为什么原来的结果也没有改变? (它仍然是 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