CLS允许类中的代码的私有部分不符合CLS.这怎么可能?

tee*_*nup 6 .net c#

CLS允许类中的代码的私有部分不符合CLS.这怎么可能,因为最终代码需要转换为IL?

Jul*_*ain 7

CLS代表公共语言规范.为了简化,它基本上是所有.NET语言必须知道的最小类型和标识符.例如,Int32符合CLS:任何.NET语言都必须能够处理它.UInt32不是.由于您的代码是私有的,因此其他语言的其他程序集不会访问它,因此它与CLS兼容无关紧要.

有关CLS合规性的更多信息,请参阅此MSDN页面.

编辑:我认为您误解了CLS的合规性.这不是关于代码是否可以编译成IL.UInt32可以在IL中使用.名为"©"的标识符也是如此.CLS合规性只是语言互操作性的最小合同.CLR支持的内容比CLS合规性的限制更广泛.

编辑2:是的,你是对的.即使有直接映射到IL,也需要.NET语言来支持Int32而不是UInt32.请参阅指针,它们在IL和C#中受支持,但不符合CLS.VB.NET没有实现对它们的支持,仍然符合CLS.