通过


泛型参数约束类型 <typename> 不符合 CLS

泛型类型标记为 <CLSCompliant(True)>但其类型形参之一的约束指定一个标记为 <CLSCompliant(False)>的类型,没有标记或不合格的类型,因为它是不符合要求的类型。

要使某类型符合语言独立性和与语言无关的组件 (CLS),则必须只使用符合 CLS 的类型。 这还适用于对泛型类型的类型形参的约束。

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

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

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

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

错误 ID: BC40040

更正此错误

  • 如果泛型类型必须获取这种特定类型约束的类型形参,请删除 CLSCompliantAttribute。 类型不符合 CLS。

  • 如果泛型类型必须符合 CLS,则将此约束的类型改为最接近的符合 CLS 的类型。 例如,如果不需要 2147483647 以上的数值范围,可以使用 UInteger 取代 Integer 。 如果确实需要更大范围,可以用 UInteger 代替 Long

另请参阅