加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:19:13 所属栏目:百科 来源:网络整理
导读:CLS允许类中的代码的私有部分不符合CLS.这怎么可能,因为最终代码需要转换为IL? 解决方法 CLS代表公共语言规范.为了简化,它基本上是所有.NET语言必须知道的最小类型和标识符.例如,Int32符合CLS:任何.NET语言都必须能够处理它. UInt32不是.由于您的代码是私
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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读