【问题标题】:Does CLSCompliant attribute care for older versions of .NET languages?CLSCompliant 属性是否关心旧版本的 .NET 语言?
【发布时间】:2009-06-06 21:46:59
【问题描述】:

例如,我读到 Visual Basic .net 之前没有运算符重载,因此如果它们也没有作为普通方法提供(添加,而不是 operator+ )。

现在 VB 有了这个特性,如果你有普通的静态方法,比如 Add、Subtract 而不是运算符重载,CLSCompliant 属性会关心吗?

我编写了一些没有静态方法的类型,但只有运算符重载,C# 编译器不在乎。如果有问题,它会警告我,对吗?

【问题讨论】:

    标签: c# vb.net cls-compliant


    【解决方案1】:

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

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

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

    【讨论】:

    • 我推荐 CLSCompliant 在使用多种语言编写时,即使是在同一个团队中(例如,今天早些时候我建议使用 JSCript.NET 执行某些任务,并且需要从 C# 或 VB 调用该代码.NET——我认为,CLSCompliant 检查在这种情况下会有所帮助,如果只有一个程序员编写整个代码)。
    • 确实 - 我在考虑一个单一语言的团队。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多