泛型参数约束类型 <typename> 不符合 CLS
更新:2007 年 11 月
泛型类型标记为 <CLSCompliant(True)>,但针对它的其中一个类型参数的约束指定了标记为 <CLSCompliant(False)>、未标记或由于它是不符合类型而未限定的类型。
要使类型符合 公共语言规范 (CLS),它必须只能使用符合 CLS 的类型。这一点也适用于针对泛型类型的类型参数的约束。
以下 Visual Basic 数据类型不符合 CLS:
将 CLSCompliantAttribute 属性应用于编程元素时,将该属性的 isCompliant 参数设置为 True 或 False 来指示符合或不符合。此参数没有默认值,您必须提供一个值。
如果没有将 CLSCompliantAttribute 应用于某个元素,则认为该元素是不符合的。
默认情况下,此消息是一个警告。有关隐藏警告或将警告视为错误的信息,请参见 在 Visual Basic 中配置警告。
**错误 ID:**BC40040
更正此错误
如果泛型类型必须采用受此特定类型约束的类型参数,请移除 CLSCompliantAttribute。该类型将无法符合 CLS。
如果泛型类型必须符合 CLS,请将此约束的类型更改为最接近的符合 CLS 的类型。例如,您可以使用 Integer 替换 UInteger(如果您不需要 2,147,483,647 以上的数值范围)。如果您确实需要扩展的范围,可以将 UInteger 替换为 Long。