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

Joa*_*nge 1 c# vb.net cls-compliant

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

现在VB有这个功能,如果你有普通的静态方法,如Add,Subtract而不仅仅是运算符重载,那么CLSCompliant属性是否会关注?

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

Mar*_*ell 6

CLS合规性与旧的 任何东西都没有关系 - 它只是您应该合理地期望处理任意语言(在使用代码时)的核心功能集.例如,假设语言区分大小写不合理的,因此成员"Foo"和"foo"虽然在C#中合法,但不符合CLS.

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

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