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.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...