2015-02-10 25 views
0

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

不管怎么说,这里是发生了什么事的简短摘要:

  1. 计划在次主(开始),和一个新的表单实例提出。表单的构造函数是一个ByRef参数。
  2. 执行New()子句后,该参数保存在表单实例的私有成员中。
  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 

也许我做错了,或者也许是语言的限制。但有没有办法做到这一点,而不使用全球?

+1

整数是值类型 - 当你指定一个到另一个值复制,但两者之间没有联系。 – 2015-02-10 21:10:42

回答

2

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

Class MyData 
    public value as integer 
End Class 

您可以这样做:

_Result.value = 5555 
+0

谢谢!这是解决方案。 – Lakey 2015-02-11 00:11:17