Vb.net 类不更新byref传递的变量
我在vb.net中有一个类被定义为公共类a 类A在加载时创建,并在每个程序循环中调用一次 类A的构造函数包含参数(byref值为long) 我有一个名为varB的全局变量,它在创建时传递给类aVb.net 类不更新byref传递的变量,vb.net,variables,byref,Vb.net,Variables,Byref,我在vb.net中有一个类被定义为公共类a 类A在加载时创建,并在每个程序循环中调用一次 类A的构造函数包含参数(byref值为long) 我有一个名为varB的全局变量,它在创建时传递给类a 现在,为什么在程序循环期间更改varB时,更改不会反映在类中?如果这是如此简单的话。。。ByRef仅在您调用的子/函数内工作,以修改您“发送”的变量,从该子/函数返回后,不再进行任何更改 Public Class ClassOne Public ValuefromClassOne As Integ
现在,为什么在程序循环期间更改varB时,更改不会反映在类中?如果这是如此简单的话。。。ByRef仅在您调用的子/函数内工作,以修改您“发送”的变量,从该子/函数返回后,不再进行任何更改
Public Class ClassOne
Public ValuefromClassOne As Integer
Public Sub ChangeAValue(ByRef AValue As Integer)
AValue = 12 ' This will modifiy the variable
ValuefromClassOne = AValue ' this will ONLY put 12 inside ValueFromClassOne
End Sub
End Class
Public Class ClassTwo
Public ValueFromClassTwo As Integer
Public Sub CallToClassOne()
ChangeAValue(ValueFromClassTwo) ' this will ONLY put 12 into ValueFromClassTwo
ValueFromClassTwo = 25 ' this will have effect only on ValueFromClassTwo - no link
End Sub
End Class
因此,如果您想获得该值,则必须使用对象(定义新类)
但请注意,ValueFromClass2的更改将得到反映,但不会得到反映
通知:使用Class2中的公共共享事件通知/添加事件
处理程序,以获得通知
Public Class IntegerHolder
Public Property AnInteger As Integer
End Class
Public Class ClassOne
Public ValuefromClassOne As IntegerHolder
Public Sub ChangeAValue(ByVal AValue As IntegerHolder)
AValue.AnInteger = 12 ' This will modifiy the variable
ValueFromClassOne.AnInteger = AValue.AnInteger ' this will ONLY put 12 inside ValueFromClassOne
' !!!!! BUT with this : !!!!
ValueFromClassOne = AValue
' Now you hold a copy of the variable given in argument of ChangeAValue
End Sub
End Class
Public Class ClassTwo
Public ValueFromClassTwo As New IntegerHolder
Public Sub CallToClassOne()
ChangeAValue(ValueFromClassTwo) ' this will ONLY put 12 into ValueFromClassTwo
ValueFromClassTwo.AnInteger = 25 ' this will have effect on
' ValueFromClassTwo AND ValuefromClassOne
End Sub
End Class