vba - 如何防止在 Locals 窗口中显示类属性的支持私有(private)字段?

标签 vba class

虽然是一位经验丰富的 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
为什么都是NamepName在本地窗口中显示?我能以某种方式摆脱pName吗? ?

最佳答案

正如评论和答案已经说过的那样,这只是 VBE 有帮助。

但是,如果您发现在 locals 工具窗口中列出私有(private)字段和公共(public)成员很吵,有一种方法可以很好地清理它 - 我在这里放了 Test程序内ThisWorkbook ,并离开名为 Class1 的类:

clean locals toolwindow

那么这里发生了什么?什么是 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 下。 ,因此除非您想查看它们,否则您将看不到基础字段值:

locals toolwindow, 'this' field expanded

另外一个好处是,您不再需要任何伪匈牙利语前缀,属性的实现非常清晰,并且最好的属性具有与其支持字段完全相同的标识符名称。

关于vba - 如何防止在 Locals 窗口中显示类属性的支持私有(private)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569332/

相关文章:

Python:为什么不能使用 self.variable 作为方法中的可选参数?

Java打印对象、封装

由于枚举类嵌套,C++ 循环依赖

excel - 使用 workbook_sheetchange 事件在行范围内使数值为负

vba - 工作簿未通过作为参数传递在 Excel 中激活

c++ - 重载的 const 和非 const 类方法在 C++ 中返回引用

c++ - 触发了一个断点(析构函数),类模板类型是它自己的一个版本?

ms-access - MS Access 导入 UTF-8 文件

excel - 使用开放文档和网络服务

vba - 同一个文件在两台不同的计算机上怎么会得到不同的结果呢?