gpt4 book ai didi

.net - BCL 与 CLS 有何关系?

转载 作者:行者123 更新时间:2023-12-04 06:31:09 28 4
gpt4 key购买 nike

一些 .net 理论问题:哪些库实际上是标准化的?我知道有一个通用类型系统,它指定了诸如 32 位整数和所有这些低级信息之类的东西,但我对通用语言规范和基类库的状态/关系感到困惑。

系统中有一些基本类型:System.Object、System.ValueType、System.Exception。但是像 System.String 和它的方法/属性(如 .Length、.StartsWith 或 string.IsNullOrEmpty)呢?

这些是任何标准的一部分吗? ECMA-335 是否足以实现符合 CLS 的 .net 运行时?

PS:我知道人们日常使用的许多功能并不符合标准,而是微软专有的 .net 框架实现的一部分。这与在某些不受支持的操作系统下运行现有应用程序无关,我会为此考虑 Mono。这确实是一个关于什么是 .net 的核心,什么是 .net 标准库的理论问题。

最佳答案

查看 Ecma 规范的第四部分。它定义了“标准运行时库”。但是,没有一个“标准库”。它定义了 2 个配置文件:一个内核配置文件和一个紧凑配置文件,以及 7 个库。紧凑配置文件是内核配置文件的超集。它定义的几个库是“可选的”,并且不与任一配置文件相关联。它还标识了一些“可选”的 CLR 功能,并且可能未包含在所有实现中。

Ecma 规范中定义的 BCL(基类库)只是它定义的 7 个库之一。

CLS 或通用语言规范是一组 API 设计指南,可促进最大的语言互操作性。

正如 ecma 规范第 1 部分第 7.2 节中所定义的,CLS 合规性有 3 种 View :

  • 符合 CLS 的框架是包含符合 CLS 的代码的库
  • CLS 使用者是一种语言(或其他工具),它允许访问任何 CLS 兼容框架中定义的任何功能。
  • CLS 扩展器是一种允许程序员使用和扩展符合 CLS 的框架的语言(或其他工具)。

  • ECMA 规范中列出了每一项的确切要求。

    在任何情况下,都没有“符合 CLS 的 .NET 运行时”的概念。 “.NET 运行时”由运行时系统中的所有内容组成。然而,CLS 合规性只涉及公开可见项目的界面。

    关于.net - BCL 与 CLS 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5402699/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com