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

前端之家收集整理的这篇文章主要介绍了c# – CLS允许类中代码的私有部分不符合CLS.这怎么可能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
CLS允许类中的代码的私有部分不符合CLS.这怎么可能,因为最终代码需要转换为IL?

解决方法

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

有关CLS合规性的更多信息,请参见this MSDN page.

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

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

猜你在找的C#相关文章