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