虽然是一位经验丰富的 VBA 程序员,但这是我第一次制作自己的类(对象)。我很惊讶地看到所有属性在 Locals 窗口中都是“重复的”。一个小例子(在“结束子”处中断):
' Class module:
Private pName As String
Public Property Let Name(inValue As String)
pName = inValue
End Property
Public Property Get Name() As String
Name = pName
End Property
' Normal module:
Sub Test()
Dim objTest As cTest
Set objTest = New cTest
objTest.Name = "John Doe"
End Sub
为什么都是Name
和 pName
在本地窗口中显示?我能以某种方式摆脱pName
吗? ?最佳答案
正如评论和答案已经说过的那样,这只是 VBE 有帮助。
但是,如果您发现在 locals 工具窗口中列出私有(private)字段和公共(public)成员很吵,有一种方法可以很好地清理它 - 我在这里放了 Test
程序内ThisWorkbook
,并离开名为 Class1
的类:
那么这里发生了什么?什么是 this
?
这里是 Class1
:
Option Explicit
Private Type TClass1
Name As String
'...other members...
End Type
Private this As TClass1
Public Property Get Name() As String
Name = this.Name
End Property
Public Property Let Name(ByVal value As String)
this.Name = value
End Property
该类只有 1 个私有(private)字段,一个名为
this
的用户定义类型值,它包含所有封装的数据成员。结果,属性的基础字段被有效隐藏,或者更确切地说,它们都重新组合在
this
下。 ,因此除非您想查看它们,否则您将看不到基础字段值:另外一个好处是,您不再需要任何伪匈牙利语前缀,属性的实现非常清晰,并且最好的属性具有与其支持字段完全相同的标识符名称。
关于vba - 如何防止在 Locals 窗口中显示类属性的支持私有(private)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569332/