我理解手头的问题,但我正在寻找推荐的解决方法。
我有一个包含get / set属性的类,当使用特定值调用set时,它将执行一些操作。
Public Class A
Private _bFlag As Boolean
Public Property bFlag() As Boolean
Get
Return _bFlag
End Get
Set(value As Boolean)
_bFlag = value
If (value) Then
...do something...
End If
End Set
End Property
End Class
当我将类变量作为ByRef传递给本地例程时,直到函数完成后才会触发Set属性。但我在切换标志的地方执行了一些瞬态操作。我想立即通知变量切换。
...
Dim myClassA as New A
...
<------Here the bFlag is False
Func1(myClassA.bFlag)
<------Here the bFlag is False since Func1 completed with the bFlag set as False
<------ the Set was never called since the variable never changed at this level
Public Sub Func1(ByRef flag as Boolean)
... start some action
flag = True
... stop some action
flag = False
End Sub
我理解这是此link的预期操作,其中包含示例:
Sub CopyBackByRef_Explained()
Dim v1 = New C1
Dim vbTemp = v1.P1
FunctionWithInt(vbTemp)
v1.P1 = vbTemp
End Sub
其中通过引用传递的变量首先成为临时副本以传递函数。
我怎样才能这样做,以便我可以立即通知ByRef传递的变量的变化?
答案 0 :(得分:1)
我认为你可以将属性作为lambda表达式传递并使用反射来调用setter,但是将lambter中的setter调用包装起来并将其传递给它可能更容易:
Func1(Sub(value) myClassA.bFlag = value)
Public Sub Func1(flag As Action(Of Boolean))
' start some action
flag(True)
' stop some action
flag(False)
End Sub