BC40028:参数“<parametername>”的类型不符合 CLS

由于类型不符合要求,过程标记为 <CLSCompliant(True)>,但是声明参数的类型标记为 <CLSCompliant(False)>、未标记或不合格。

一个过程要符合语言独立性和与语言无关的组件 (CLS),必须只使用符合 CLS 的类型。 这适用于参数的类型、返回类型及其所有本地变量的类型。

以下 Visual Basic 数据类型不符合 CLS:

当将 CLSCompliantAttribute 应用到编程元素中时,需要将该特性的 isCompliant 参数设置为 TrueFalse 来指示符合或不符合性。 此参数没有默认值,必须为其提供一个值。

如果不将 CLSCompliantAttribute 应用到元素,则它将被视为不符合规范。

默认情况下,此消息是一个警告。 有关隐藏警告或将警告视为错误的信息,请参见 Configuring Warnings in Visual Basic

错误 ID:BC40028

更正此错误

  • 如果过程必须采用此特定类型的参数,请删除 CLSCompliantAttribute。 该过程不符合 CLS。

  • 如果过程必须符合 CLS,请将此参数的类型改为尽可能符合 CLS 的类型。 例如,如果不需要 2147483647 以上的数值范围,可以使用 UInteger 取代 Integer 。 如果确实需要更大范围,可以用 UInteger 代替 Long

  • 如果在与自动化或 COM 对象对接,请记住,某些类型具有与 .NET Framework 中不同的数据宽度。 例如,int 在其他环境中通常为 16 位。 如果接受此类组件中的一个 16 位整数,则在托管的 Visual Basic 代码中将其声明为 Short 而不是 Integer