首页 > 编程笔记 > C#笔记

C#/.NET BCL:基础类库

基础类库(BCL)是微软所提出的一组标准库,可提供给 .NET Framework 所有语言使用。

随着 Windows 以及 .NET Framework 的成长,BCL 已近乎成为在 .NET 上的 Windows API。

当安装 .NET Framework 时,所有的基础类库都部署到全局程序集缓存(GAC)中,所以不需要在你的工程中手动引用任何的基础类库,它们会被自动引用。

部分 mscorlib.dll 包括的命名空间如下:
然而在 C:\Program Files(x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\ v4.0\ 目录下,我们还有一个 System.dll,这个参考是每次新建工程时 VS 自动引用的若干参考之一。

这个程序集中也有一个 System 命名空间,它的内容和 mscorlib.dll 中的不同。

可以看到,System 这个命名空间存在于不止一个程序集中。这意味着不同的程序集可以共享一个命名空间。

在 System.dll 中,System 类型拥有 Uri 这个成员,mscorlib.dll 中的 System 类型则拥有 int 这个成员(基元类型)。

所以我们可以做个试验,如果我们将工程中对 System 的引用去掉,那么我们就不能定义一个 Uri 类型的对象。

但我们仍然可以使用 int 类型,因为它虽然也在 System 这个类型里面,但位于 mscorlib.dll 中。

当你去掉对 System 的引用时,你仅仅去掉了 System.dll 和里面的功能,但你没有去掉 mscorlib.dll 中 System 类型的功能。

BCL 是属于整个 .NET 框架的,并非某种语言的一个基础类库。

例如,C# 中 string 类型的所有功能和定义来源于 mscorlib.dll 中的 System.String,而 VB 中 string 类型的功能和定义也来源于相同的地方,所以 String 和 string 两个关键字没有任何区别,类似的还有 Int32 和 int。

基础类库中定义的类型称为基元(primitive)类型,由 .NET 框架所有的语言共享。

所有教程

优秀文章