2015-02-10 46 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