BCL与CLS有何关系?

| .net理论中的一个问题:哪些库实际上是标准化的?我知道有一个通用类型系统,它指定诸如32位整数之类的内容以及所有这些低级信息,但是我对通用语言规范和基类库的状态/关系感到困惑。 系统中有一些基本类型:System.Object,System.ValueType,System.Exception。但是,诸如System.String之类的东西及其方法/属性(如.Length,.StartsWith或string.IsNullOrEmpty)又如何呢? 这些是任何标准的一部分吗? ECMA-335是否足以实施符合CLS的.net运行时? PS:我知道人们每天使用的许多功能不符合标准,而是Microsoft专有的.net Framework实现的一部分。这与在某些不受支持的操作系统下运行现有的应用程序无关,我将为此寻找Mono。这实际上是关于什么构成.net核心,什么是.net标准库的理论问题。     
已邀请:
查看Ecma规范的分区IV。它定义了“标准运行时库”。但是,没有一个“标准库”。它定义了2个配置文件:内核配置文件和压缩配置文件以及7个库。紧凑配置文件是内核配置文件的超集。它定义的几个库是“可选的”,并且与任何一个概要文件都不相关。它还标识了一些“可选”的CLR功能,可能并非所有实现都涵盖。 Ecma规范中定义的BCL(基类库)只是它定义的7个库之一。 CLS(或公共语言规范)是用于API设计的一组准则,可促进最大程度的语言互操作性。 根据ecma规范的分区I中的7.2节中的定义,有3个关于CLS符合性的视图: 符合CLS的框架是包含符合CLS的代码的库 CLS使用者是一种语言(或其他工具),允许访问任何符合CLS的框架中定义的功能。 CLS扩展程序是一种语言(或其他工具),允许程序员使用和扩展兼容CLS的框架。 ECMA规范中列出了每一个的确切要求。 无论如何,都没有“符合CLS的.NET运行时”的概念。 \“。NET Runtime \”包含运行时系统中的所有内容。但是,是否符合CLS要求仅与公开可见项目的界面有关。     
AFAIK的核心是mscorlib.dll中的所有内容。 使用Reflector查看mscorlib.dll(虽然它仍然是免费的!),以查看包含的内容和不包含的内容。或查看您感兴趣的Type的MSDN .NET Framework类库文档-该文档指出哪个Assembly包含每个Type。 包含System.String,但是例如,不包含System.Uri。 包括诸如
List<T>
之类的基本通用集合,但不包括
Queue<T>
Stack<T>
。     

要回复问题请先登录注册