【问题标题】:Property Let creates an unwanted variable属性 Let 创建一个不需要的变量
【发布时间】:2024-04-15 06:45:02
【问题描述】:

我在任何地方都找不到任何东西,所以这是我的问题(尽管它主要是化妆品问题):

我有一个类被用作自定义数据类型,但是当我查看本地变量或观察窗口时,我看到每个 Property Let 都创建了一个额外的变量,这使得窗口中充斥着冗余变量和信息(并且可能占用额外的空间)。

示例:

在类模块 Class1 中:

Private data As Integer

Property Get X() As Integer
    X = data
End Property

Property Let X(ByVal Value As Integer)
    data = Value
End Property

然后进行测试:

Sub Test1()

Dim TestClass As Class1
Set TestClass = New Class1

TestClass.X = 100

End Sub

在本地窗口中:

我应该以某种方式回收这个额外的变量还是我做错了什么?

--- 如果您查看现有的 Excel 对象(如工作表),则没有任何重复的变量。

编辑:为了澄清,我想知道是否有一种方法可以在本地/监视窗口中隐藏属性以使它们更易于导航。

【问题讨论】:

  • Locals 窗口将显示所有创建的变量。这很正常。

标签: vba excel variables properties


【解决方案1】:

没关系。 data 是您的私有变量,X 只是财产。没有错。但是您应该考虑命名约定,私有变量的 setter 和 getter 应该以某种方式保持一致,例如:

'Member variable, pName - private Name
Private pName As String

'Properties
Property Get Name() As String
    Name = pName
End Property

Property Let Name(val As String)
    pName = val
End Property

【讨论】:

  • 是的,我通常使用一致的名称,我只是想清楚地证明创建了两个不同的变量。那么有没有办法至少将这些隐藏在本地窗口中?它使调试变得更加困难,我宁愿它看起来更干净。
  • @LeoSteeves 不幸的是,现在有办法摆脱这种情况。在此窗口中,您可以获得有关对象的所有信息 - 所有私有变量和所有属性。