代码之家  ›  专栏  ›  技术社区  ›  Nam G VU

参数类型不符合CLS,为什么?

c#
  •  31
  • Nam G VU  · 技术社区  · 14 年前

    我收到这样的警告 alt text 如果您知道它是什么,请解释;帮我摆脱它。 不结盟运动。

    3 回复  |  直到 8 年前
        1
  •  50
  •   Alex Jarrett Meyer    4 年前

    在AssemblyInfo.cs文件中,可能有一行

    [assembly:CLSCompliant(true)]
    

    如果这样做,那么必须满足以下规则(抄袭意大利面 http://www.devarticles.com/c/a/C-Sharp/Making-Your-Code-CLS-Compliant/ )

    1. 不安全类型(如指针)不应与公共成员一起使用。但是,它们可以与私有成员一起使用。

    2. 类名和成员名不应仅根据大小写而有所不同。例如,我们不能有两个名为MyMethod和MyMethod的方法。

    3. 只能重载属性和方法,不应重载运算符。

        2
  •  12
  •   whoisthemachine    10 年前

    这是一个老问题,但我认为一个更好的解释是由于未来的调查(如我自己)。

    首先,其他答案中的链接提供了给出此警告的原因的详细信息。

    但是,总而言之,如果为公共语言运行库(如C#)编写的代码可以与为CLR设计的其他语言进行接口,那么它是符合CLS的。这意味着特定于该语言的某些数据类型(不是整个运行时的公共数据类型)是不兼容的。对于变量和方法来说,快速而简单的解决方法是给它们提供可见性修饰符 internal