公共类型可以在类模块中声明

问题描述 投票:-1回答:2

我想在VBA(访问)类模块中创建一个返回结果类型的函数。像这样:

Public Type CheckResult
  isOk As Boolean
  errorText As String
End Type

Public Function Check() As CheckResult
    ...
end function

此功能用于许多不同的地方。

但是编译器告诉我,不允许在类模块中声明公共类型?为什么是这样?而不是把我的类型放在哪里?我应该为这种类型创建一个新模块吗?或者更好的是创建一个“AllTypes”-Module来放入所有的Type声明?

vba class ms-access types
2个回答
4
投票

至于为什么问题:

类模块意味着包含代码单元:如果类未初始化,它们几乎没有任何内容。

普通模块不是那么多。任何事物都可以使用普通模块中任何公开声明的内容。

在类模块中使用Public类型是没有意义的,因为如果外部代码使用该类型,则不会通过类模块访问它。如果只有类模块使用它,则不需要公开。

以逻辑单位组织代码是明智的。如果将所有公共类型放在一个模块中是合乎逻辑的,那么这样做,但这不是一个非常可扩展的设计决策。决定将所有公共功能放在一个模块中,将所有公共功能放在另一个模块中,这是明智的。对我来说,将所有错误处理代码放在一个模块中通常更合乎逻辑,从该模块中函数中使用的所有公共类型声明开始。


1
投票

编译器是对的。

因此,正如您已经想到的那样,使用标准模块进行这些声明。我只为这样的声明(也是枚举)保留了一个模块。

© www.soinside.com 2019 - 2024. All rights reserved.