在自己内部使用Class(对象)时是否有任何“陷阱”需要注意?

时间:2010-06-04 18:00:29

标签: oop vb6

我有一个Registry类,我想从该Registry类中访问一些Registry值。 (对这些值进行了一些计算,所以我认为我只是将所有代码放在Registry类本身中。)

所以我们的RegistryRoutine.cls可能会在中包含

Function GetMyValue() as integer
    Dim R as new RegistryRoutine

<calculations>
GetMyValue=R.GetRegisetryValue (HKEY, key, value, etc.)

End Function

2 个答案:

答案 0 :(得分:1)

不,一般情况下,您不会看到任何问题(例如成员变量被覆盖或类似的任何奇怪的事情)。

如果你有明确的共享变量被多次写入,那么你可能会遇到问题。但无论你做什么,那都是危险的。

注意递归情况 - 例如,GetMyValue()不应该调用R.GetMyValue(),GetRegistryValue()也不应该调用GetMyValue()。

然而,你很少想要这样做。

  1. 由于您没有将任何参数传递给GetMyValue(),我们可以假设当前实例已经拥有了所需的所有信息。
  2. 由于您只返回一个整数而不是RegistryRoutine实例,因此客户端不需要新实例。
  3. 那么,为什么不直接调用GetRegistryValue(没有 R。)?

答案 1 :(得分:1)

类可以与自己的实例一起使用。例如,考虑一下树结构的工作原理。 Node类必须跟踪其子级,或者必须跟踪其父级(或两者)。所有节点都是同一个类。