MsCorLib.dll中的内容

来源:互联网 发布:mysql设置编码utf8 编辑:程序博客网 时间:2024/05/18 03:45

用Together VS.NET中的Model View查看References中的内容。第一个引用就是MsCorLib.dll,打开其default图(Diagram)后,有两个部分:Microsoft和System。这里先研究一下System命名空间。打开System类图缩略:缩略图

哈哈,所有System中的东西都有条理地出现在你面前了。从左到右挑显眼的先看一下:

一、IClonable和_AppDomain接口

1.IClonable有7个类实现了它,分别是:

CharEnumerator:支持循环访问 String 并读取它的各个字符。

Array:提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。

MultcastDelegate:表示多路广播委托;即,其调用列表中可以拥有多个元素的委托。MulticastDelegate 拥有一个带有链接的委托列表,该列表称为调用列表,它包含一个或多个元素。在调用多路广播委托时,将按照调用列表中的委托出现的顺序来同步调用这些委托。如果在该列表的执行过程中发生错误,则会引发异常。

Delegate:表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。

Version:表示公共语言运行库程序集的版本号。

OperatingSystem:表示有关操作系统的信息,如版本和平台标识符。

String:表示文本,即一连串 Unicode 字符。

2.AppDomain实现了_AppDomain接口,表示应用程序域,它是一个应用程序在其中执行的独立环境。

二、MarshalByRefObject允许在支持远程处理的应用程序中跨应用程序域边界访问对象。他有子类:AppDomainContextBoundObject定义所有上下文绑定类的基类。

三、IAppDomainSetup接口,对应的实现类是AppDomainSetup表示可以添加到AppDomain 的实例的程序集绑定信息。

四、接下来是三大接口:IComparable,ICoverable,IFormattable,他们主要是为定义数据类型准备的。

1.实现IComparable接口的有如下数据类型(他们都是可比较的):

Version,DateTime,String,TimeSpan,Char,Boolean,Double,Single,Int32,Int64,Byte,Int16,SByte,UInt64,Decimal,UInt32,Uint16,Guid,Enum

TimeSpan表示一个时间间隔。

Guid表示全局唯一标识符 (GUID)。

2.实现ICoverable接口的有如下数据类型(他们都是可转换的):

DateTime,String,Char,Boolean,Double,Single,Int32,DBNull,Int64,Byte,Int16,SByte,UInt64,Decimal,UInt32,UInt16,Enum

DBNull用于指示不存在某个已知值(通常在数据库应用程序中)。

3.实现IFormattable接口的有下如数据类型(他们都是可格式化的):

DateTime,Double,Single,Int32,Int64,Byte,Int16,SByte,UInt64,Decimal,UInt32,UInt16,GUID,Enum

看来只有表示时间和数值的类既可以比较,又可以转换,还可以格式化。

这里我们发现了System中除了有最基本的数据类型外,还有一个如TimeSpan,Guid,DBNull等其它编程工具中不一定有的数据类型。说到数据类型,还应该有列表、包、集合等数据类型,除了Array直接在System中表示数组外,其它应该都在其下一级命名空间Collections中。

五、接下来是一些特殊的类型:UIntPtr,Type,IntPtr,Void

UIntPtr和IntPtr用于表示指针或句柄的平台特定类型。

Type表示类型声明:类类型、接口类型、数组类型、值类型和枚举类型。

Void指示不返回值的方法,即具有 void 返回类型的方法。他在System.Reflection中使用,他没有成员,因此不能创建此结构的实例。

六、Attribute是一个重要的类,表示自定义属性的基类,System空间中有很多现成的子类。

七、Exception是另一个重要的类,他表示应用程序运行时发生错误。System中,直接继承的Excepton有SystemException和ApplicationException。前者还有大量的子类,用于表示System中出现在错误。

八、还有一些相对独立的类:

Enviroment提供有关当前环境和平台的信息以及操作它们的方法。

LocalDataStoreSlot封装内存槽以存储本地数据。

LocalDataStoreMgr这个类在MSDN中好象没有提供解释。应该就是跟LocalDataStoreSlot一起用来管理内存用的吧。

TimeZone表示时区。

EvenArgs是包含事件数据的类的基类。

Math为三角函数、对数函数和其他通用数学函数提供常数和静态方法。

IServerProvider定义一种检索服务对象的机制,服务对象是为其他对象提供自定义支持的对象。

IFormatProvider提供用于检索控制格式化的对象的机制。

ICustomProvider定义一种方法,它支持对象值的自定义(用户定义)格式设置。

IAsyncProvider表示异步操作的状态。

IDisposable定义一种释放分配的非托管资源的方法。

GC控制系统垃圾回收器(一种自动回收未使用内存的服务)。

Console表示控制台应用程序的标准输入流、输出流和错误流。

Buffer操作基元类型的数组。

BitConverter将基础数据类型与字节数组相互转换。

ArgIterator表示变长参数列表;即采用可变数量的参数的函数的参数。

Activator包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。

Object支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务。这是 .NET Framework 中所有类的最终基类;它是类型层次结构的根。

Random表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。

WeakReference表示“弱引用”,即在引用对象的同时仍然允许对该对象进行垃圾回收。

TypedReference描述既包含指向某位置的托管指针,也包含该位置可能存储的类型的运行时表示形式的对象。

九、除了上面这些最基本的类,System中还有很多子空间:Configration,Resources,Diagostics,Collections,Threading,RunTime,Text,Globalization,Reflection,Security,IO

这些内容比较大,需要分别再研究。

十、从上面这些内容可以看到,其实System中的内容是非常丰富的,一些最基本的功能和实现都在这里有实现,有些使用了一个类或结构或接口,有些干脆使用一个子命名空间来表达。微软.NET中的很多思想都体现在或实现在MsCorLib.dll中了,如果以后实现一些功能,应该先来这里看看.NET是否已有现成的实现存在了,否则自已费劲实现起来不定空易,不也一定有效。学习.NET,就是要把他已经实现在东西全部掌握,方便以后自已使用,同时,借鉴他的实现方法,给自已更多思路。

以上的学习只是一点皮毛,还可以好好研究一下里面用到的设计模式。下一次再好好地把九里列的子命名空间好好地一个个研究一下。

原创粉丝点击