创建With
语句,例如
With A
.Method1OfA
.Method2OfA
.Method3OfA
End With
有没有办法在With
语句块中引用当前的“With
”ed变量?
由于我不知道,我发现自己写的是这样的东西:
With A
.Method1OfA
GlobalFunction (A)
.Method2OfA
GlobalFunction (A)
.Method3OfA
End With
即。我比我更频繁地取消引用A
。如果我能写出类似
With A
.Method1
GlobalFunction (currentlyWithed)
.Method2
GlobalFunction (currentlyWithed)
.Method2
End With
currentlyWithed
“自动”引用A
,我可以避免我想要的解除引用,因为如果A
是一个复杂的术语(很可能是首先是With
语句的原因),我会避免对该术语进行多次评估。
解决方法解决方案
Dim B: Set B=A
With B
.Method1
GlobalFunction (B)
.Method2
GlobalFunction (B)
.Method2
End With
是可以接受的,但是会创建一个临时变量(B
),该变量在With
语句的范围内存活,如果A
同时发生更改,则稍后偶然引用它可能会产生问题(即如果它同时被修改并引用了不同的实例)。
所以我希望在VB.NET或VBScript中有类似currentlyWithed
的东西,但我在文档中找不到类似的内容。
答案 0 :(得分:1)
只需按照自己的方法进行解决方法。虽然它会创建一个临时对象,但它会在方法结束时超出范围(这意味着您不必担心对象未被清除):
Public Sub DoSomething(a As Object)
Dim B: Set B=a
With B
.Method1
GlobalFunction (B)
.Method2
GlobalFunction (B)
.Method2
End With
End Sub