CLSCompliant属性是否关心旧版本的.NET语言?

时间:2009-06-06 21:47:00

标签: c# vb.net cls-compliant

例如,我读过visual basic .net之前没有运算符重载,因此如果它们不像普通方法那样提供,则无法使用类型重载运算符(Add,而不是operator +) )。

既然VB有这个功能,如果你有普通的静态方法,比如Add,Subtract而不仅仅是运算符重载,那么CLSCompliant属性会非常小心吗?

我编写了一些没有语言静态方法的类型,但只有运算符重载,而C#编译器并不关心。如果这是一个问题,它会警告我,对吧?

1 个答案:

答案 0 :(得分:6)

CLS合规性与 任何无关 - 它只是您应合理期望任意的核心功能集要处理的语言(使用代码时)。例如,假设语言区分大小写并不合理,因此成员“Foo”和“foo”虽然在C#中合法,但不符合CLS。

如果你提出要求,编译器会发出警告;将[CLSCompliant(true)]添加到类型/程序集/等中,它将验证您的声明。

如果您是ISV,您可能需要考虑CLS合规性。如果您只为自己和团队编写代码,则可能不需要开销。