尽管是一位经验丰富的VBA程序员,但这是我第一次创建自己的类(对象)。我很惊讶地看到所有属性都在“本地窗口”中“重复”。小例子(在'End Sub'处断开):
' 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都显示在Locals窗口中?我能以某种方式摆脱pName吗?
祝你好运, 黑尔格
答案 0 :(得分:11)
作为评论&答案已经说过,这只是VBE的帮助。
但是,如果你发现在 locals 工具窗口中列出私人字段和公共成员会很吵,那么就可以很好地清理它 - 这里我放了{{1} } 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
的用户定义类型值,它包含所有封装的数据成员。
因此,物业'基本字段被有效隐藏,或者更确切地说,它们都在this
下重新分组,因此除非您想要查看它们,否则您将无法看到基础字段值:
另外一个好处是,你不再需要任何伪匈牙利语前缀,属性'实现非常清晰,并且所有属性中最好的都具有与其后备字段完全相同的标识符名称。
答案 1 :(得分:6)
所有检查窗口不仅显示对象的公共接口,还显示其私有成员。 AFAIK你无能为力。
在调试时获得更多洞察力时,请考虑这是一个很好的功能。
根据我的经验,这在现实世界对象中不是一个问题,因为它们往往具有更多的字段和属性。假设一致的命名(如您的示例所示),字段和属性很好地组合在一起。