例如,我读过visual basic .net之前没有运算符重载,因此如果它们不像普通方法那样提供,则无法使用类型重载运算符(Add,而不是operator +) )。
既然VB有这个功能,如果你有普通的静态方法,比如Add,Subtract而不仅仅是运算符重载,那么CLSCompliant属性会非常小心吗?
我编写了一些没有语言静态方法的类型,但只有运算符重载,而C#编译器并不关心。如果这是一个问题,它会警告我,对吧?
答案 0 :(得分:6)
CLS合规性与旧 任何无关 - 它只是您应合理期望任意的核心功能集要处理的语言(使用代码时)。例如,假设语言区分大小写并不合理,因此成员“Foo”和“foo”虽然在C#中合法,但不符合CLS。
如果你提出要求,编译器会发出警告;将[CLSCompliant(true)]
添加到类型/程序集/等中,它将验证您的声明。
如果您是ISV,您可能需要考虑CLS合规性。如果您只为自己和团队编写代码,则可能不需要开销。