参数“<parametername>”的类型不符合 CLS
更新:2007 年 11 月
一个过程被标记为 <CLSCompliant(True)>,但用标记为 <CLSCompliant(False)> 的类型、未标记的类型或不具资格的类型(因为它是不符合的类型)声明了参数。
为使过程符合 公共语言规范 (CLS),它必须只使用符合 CLS 的类型。这一点适用于参数类型、返回类型及其所有局部变量的类型。
以下 Visual Basic 数据类型不符合 CLS:
将 CLSCompliantAttribute 应用于编程元素时,将该属性的 isCompliant 参数设置为 True 或 False 来指示符合或不符合。此参数没有默认值,您必须提供一个值。
如果没有将 CLSCompliantAttribute 应用于某个元素,则认为该元素是不符合的。
默认情况下,此消息是一个警告。有关隐藏警告或将警告视为错误的信息,请参见 在 Visual Basic 中配置警告。
**错误 ID:**BC40028
更正此错误
如果该过程必须采用此特定类型的参数,则移除 CLSCompliantAttribute。该过程无法符合 CLS。
如果该过程必须符合 CLS,则将此参数的类型更改为最接近的符合 CLS 的类型。例如,您可以使用 Integer 替换 UInteger(如果您不需要 2,147,483,647 以上的数值范围)。如果您确实需要扩展的范围,可以将 UInteger 替换为 Long。
如果您针对的是自动化对象或 COM 对象,请记住,某些类型具有与 .NET Framework 中不同的数据宽度。例如,int 在其他环境中经常是 16 位。如果您接受来自此类组件中的 16 位整数,则在您所管理的 Visual Basic 代码中将其声明为 Short 而不是 Integer。