如何隐式调用类的默认函数

6diegodiego9

导入此类:

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "MyMsgBox"
Attribute VB_PredeclaredId = True

Public Function Show(testo As String) as Boolean
Attribute Show.VB_UserMemId = 0
    msgbox testo
    Show = True
End Function

并在模块中执行以下代码:

MyMsgBox.Show "hi"
If MyMsgBox("hi") = True Then msgbox "it works"
MyMsgBox "hi"  ' << I get "Compile error: Invalid use of property"

为什么最后一行给出错误?
最有效的替代方法是什么?

马修·金登(Mathieu Guindon)

您不想这样做。

默认成员是邪恶的,隐式的和令人困惑的代码。帮助这样的Rubberduck注释@DefaultMember使隐藏的属性更加可见,但是API仍然是一种奇怪的,非常规的,非惯用的VBA代码。

带有单个参数的默认成员应命名为Item,其参数为Index封装集合的-类本身将是一些自定义集合类。

每次使用默认成员都会归结为滥用。

有关更多信息,请参见《现代VBA最佳做法:默认成员》。


现在清除了...

由于该VB_PredeclaredId = True属性,调用默认成员的最短方法是:

?MyMsgBox("test")

这是因为MyMsgBox是类的两个名称,并对该类类型的全球范围的对象变量的名称。请注意,如果不捕获返回值,则是“属性的无效使用”...。请注意,VBA是如何假设默认成员为Property成员的。

您可以使用以下命令在IDE中获取默认成员的参数quick-info MyMsgBox(

键入(开头括号时,会显示参数quick-info

到底为什么默认成员调用在本地实例(而不是默认实例)上正常工作的原因是模糊不清的-大概是VBA在这里变得混乱,可以理解的是:这是直接语言功能的滥用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何隐式调用父类的构造函数

来自分类Dev

隐式与显式默认构造函数调用

来自分类Dev

隐式调用函数

来自分类Dev

为什么C ++隐式调用父默认构造函数?

来自分类Dev

隐式调用超类中的无参数构造函数

来自分类Dev

如何隐式调用函数调用运算符?

来自分类Dev

如何在某些R函数中隐式调用列

来自分类Dev

如何在Python类函数中隐式传递参数

来自分类Dev

让隐式派生类构造函数调用基类构造函数

来自分类Dev

从定义的副本构造函数调用默认(隐式)副本构造函数

来自分类Dev

C ++:派生类隐式调用显式构造函数

来自分类Dev

C++在初始化类实例时隐式调用类成员的构造函数

来自分类Dev

与基类构造函数相比,什么时候调用Java隐式构造函数?

来自分类Dev

从main隐式调用类中的方法

来自分类Dev

调用函数中的歧义。隐式转换?

来自分类Dev

C ++隐式转换构造函数调用

来自分类Dev

调用由隐式方法返回的函数

来自分类Dev

Golang,Go:隐式调用接口函数?

来自分类Dev

调用使用隐式的咖喱函数

来自分类Dev

隐式调用不可访问的虚拟基类的构造函数

来自分类Dev

Qt隐式共享类-调用函数传递并按值返回昂贵吗?

来自分类Dev

为什么类中的ostringstream类型的成员导致“调用隐式删除的复制构造函数”错误?

来自分类Dev

在Python 3中隐式调用基本元类初始化函数

来自分类Dev

Qt隐式共享类-调用函数传递并按值返回昂贵吗?

来自分类Dev

隐式类中的Scala按名称调用构造函数参数

来自分类Dev

如何在C ++中删除类的所有隐式(默认)方法?

来自分类Dev

C ++ 11:默认构造函数:隐式还是显式?

来自分类Dev

为什么带有用户声明的析构函数的类具有隐式默认构造函数?

来自分类Dev

用户定义的构造函数和隐式默认构造函数

Related 相关文章

  1. 1

    如何隐式调用父类的构造函数

  2. 2

    隐式与显式默认构造函数调用

  3. 3

    隐式调用函数

  4. 4

    为什么C ++隐式调用父默认构造函数?

  5. 5

    隐式调用超类中的无参数构造函数

  6. 6

    如何隐式调用函数调用运算符?

  7. 7

    如何在某些R函数中隐式调用列

  8. 8

    如何在Python类函数中隐式传递参数

  9. 9

    让隐式派生类构造函数调用基类构造函数

  10. 10

    从定义的副本构造函数调用默认(隐式)副本构造函数

  11. 11

    C ++:派生类隐式调用显式构造函数

  12. 12

    C++在初始化类实例时隐式调用类成员的构造函数

  13. 13

    与基类构造函数相比,什么时候调用Java隐式构造函数?

  14. 14

    从main隐式调用类中的方法

  15. 15

    调用函数中的歧义。隐式转换?

  16. 16

    C ++隐式转换构造函数调用

  17. 17

    调用由隐式方法返回的函数

  18. 18

    Golang,Go:隐式调用接口函数?

  19. 19

    调用使用隐式的咖喱函数

  20. 20

    隐式调用不可访问的虚拟基类的构造函数

  21. 21

    Qt隐式共享类-调用函数传递并按值返回昂贵吗?

  22. 22

    为什么类中的ostringstream类型的成员导致“调用隐式删除的复制构造函数”错误?

  23. 23

    在Python 3中隐式调用基本元类初始化函数

  24. 24

    Qt隐式共享类-调用函数传递并按值返回昂贵吗?

  25. 25

    隐式类中的Scala按名称调用构造函数参数

  26. 26

    如何在C ++中删除类的所有隐式(默认)方法?

  27. 27

    C ++ 11:默认构造函数:隐式还是显式?

  28. 28

    为什么带有用户声明的析构函数的类具有隐式默认构造函数?

  29. 29

    用户定义的构造函数和隐式默认构造函数

热门标签

归档