NET类体系结构分析.docx
《NET类体系结构分析.docx》由会员分享,可在线阅读,更多相关《NET类体系结构分析.docx(74页珍藏版)》请在冰豆网上搜索。
![NET类体系结构分析.docx](https://file1.bdocx.com/fileroot1/2023-1/21/61e7868c-cb3b-43ff-aed8-798c36676392/61e7868c-cb3b-43ff-aed8-798c366763921.gif)
NET类体系结构分析类体系结构分析类的分析与实现目录软件三班刘一锋第一部分.NET类库1一、类库结构和System名空间11.System名空间的类32.System名空间的接口93.System名空间的结构94.System名空间的委托115.System名空间的枚举11二、Console类131.屏幕缓冲区和控制台窗口142.Console类功能153.标准流的控制164.读写方法18三、Convert类251.Convert类的类型转换252.Convert类的方法介绍27四、Math类和Random类291.System.Math类302.System.Random类31五、TimeSpan类331.TimeSpan对象的单位和格式332.TimeSpan公共字段和属性333.构造函数和创建TimeSpan对象344.TimeSpan公共方法和运算符36六、DateTime类391.构造函数和DateTime对象的创建392.DateTime的公共字段和属性403.DateTime的方法和运算符41七、System.Collections名空间概念421.容量和计数422.下限43八、System.Collections中的接口441.IEnumerable接口452.IEnumerator接口453.IEnumerator.Reset方法454.InvalidOperationException类465.ICollection接口466.IComparer接口477.IList接口478.IDictionary接口489.IDictionaryEnumerator接口49九、System.Collections中的类521.ArrayList类522.Queue类563.Stack类57第二部分流和文件59一、基本概念591.概念602.数据传输方向603.数据流的基本操作61二、文件的基本操作611.文件的创建622.读文件623.写文件644.读写二进制文件665.读取文本文件686.写入文本文件69第一部分第一部分.NET类库应用类库应用用C#开发软件的一大优势就是能获得.NET框架的各种支持,而.NET类库就是其中重要的软件开发资源,它继承了大部分WindowsAPI函数的功能,还提供了更高级别的操作。
离开了这些类库,就很难编写实用的C#应用程序,即使是简单的控制台程序也要依赖于.NET类库。
关于类库的概念一直就存在,以前的VC有MFC类库、Delphi有类库VCL、Java有Swing、AWT等类库。
这些类库封装了系统底层的功能并提供更好的操作方式。
.NET中的类库封装了对Windows、网络、文件、多媒体的处理功能,是所有.NET语言都必须使用的核心类库。
.NET框架类库的确如其名称所暗示:
一个关于类和类型的程序库,可让开发人员的日子好过一些。
虽然这些类本身以C#编写而成,但它们可被任何基于CLR的语言使用。
以C#、VB、C+或.NET框架所支持的任何其他语言编写出来的代码,都可以制造出这些类的实例,并调用它们的方法。
一、一、类库结构和类库结构和System名空间名空间.NET框架类库的内容被组织成一个树状命名空间(namespacetree)。
每一个命名空间可以包含许多类型(例如类和接口)及其他命名空间。
.NET框架类库被组织成一个命名空间层次结构,System是这个层次结构的根。
上图展示了.NET框架类库树状命名空间很小的一部分。
System:
“树”的根,此命名空间包含.NET框架类库中的其他所有命名空间。
System.Web:
这个命名空间包含的类型能够用来创建Web应用程序,与其他许多命名空间一样,它也拥有次级命名空间。
例如,开发人员可以使用System.Web.UI中的类型来构建ASP.NET浏览器应用程序,而System.Web.Services中的类型则可用来构建ASP.NETWebServices应用程序。
System.Data:
这个命名空间内的类型造就了ADO.NET。
例如Connection类用于建立对数据库管理系统(databasemanagementsystem,DBMS)的连接,DataSet类的实例则可用于缓存(cache)和检视对DBMS执行的查询的结果。
System.Windows.Forms:
这个命名空间内的类型构成了WindowsForms,它们用于构建WindowsGUIs(图形用户界面)。
当以任何基于CLR的编程语言编写.NET框架应用程序时,都可以使用这一套通用类型来创建Windows图形界面,而不必依赖于某种特定的语言机制。
System.EnterpriseServices:
这个命名空间内的类型提供了某些企业应用所要求的服务。
System.XML:
这个命名空间内的类型支持生成和处理以XML定义的数据。
此外还有更多命名空间定义,支持文件访问(fileaccess)、对象状态序列化(objectstateserializing)、远程对象访问(remoteaccesstoobject),以及其他更多功能。
详细解释如下表:
.NETFramework类库提供了各种类、接口、委托、结构和枚举,System名空间除了包含系统预定义的类和基类,还包括常用的值和引用数据类型、事件处理程序、接口、属性和异常处理,以及提供服务支持数据的各种其他类。
System名空间还包含许多二级名空间。
1.System名空间的类名空间的类除基础数据类型外,System名空间还包含近100个类,范围从处理异常的类到处理核心运行库概念的类,如应用程序和垃圾回收器。
System名空间还包含许多二级名空间。
System名空间的类类说明AccessViolationException在试图读写受保护内存时引发的异常。
ActivationContext标识当前应用程序的激活上下文。
无法继承此类。
Activator包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。
无法继承此类。
AppDomain表示应用程序域,它是一个应用程序在其中执行的独立环境。
无法继承此类。
AppDomainManager提供非托管宿主的等效托管宿主。
AppDomainSetup表示可以添加到AppDomain的实例的程序集绑定信息。
AppDomainUnloadedException在尝试访问已卸载的应用程序域时引发的异常。
ApplicationException发生非致命应用程序错误时引发的异常。
ApplicationId包含用于唯一地标识某个应用程序的信息。
无法继承此类。
ApplicationIdentity提供唯一标识清单激活的应用程序的能力。
无法继承此类。
ArgumentException在向方法提供的其中一个参数无效时引发的异常。
ArgumentNullException当将空引用(在VisualBasic中为Nothing)传递给不接受它作为有效参数的方法时引发的异常。
ArgumentOutOfRangeException当参数值超出调用的方法所定义的允许取值范围时引发的异常。
ArithmeticException因算术运算、类型转换或转换操作中的错误而引发的异常。
Array提供创建、操作、搜索和排序数组的方法,因而在公共语言运行库中用作所有数组的基类。
ArrayTypeMismatchException当试图在数组中存储类型不正确的元素时引发的异常。
AssemblyLoadEventArgs为AssemblyLoad事件提供数据。
Attribute表示自定义属性的基类。
AttributeUsageAttribute指定另一属性类的用法。
无法继承此类。
BadImageFormatException当DLL或可执行程序的文件图像无效时引发的异常。
BitConverter将基础数据类型与字节数组相互转换。
Buffer操作基元类型的数组。
CannotUnloadAppDomainException卸载应用程序域的尝试失败时引发的异常。
CharEnumerator支持循环访问String对象并读取它的各个字符。
无法继承此类。
CLSCompliantAttribute指示程序元素是否符合公共语言规范(CLS)。
无法继承此类。
Console表示控制台应用程序的标准输入流、输出流和错误流。
无法继承此类。
ConsoleCancelEventArgs为Console.CancelKeyPress事件提供数据。
无法继承此类。
ContextBoundObject定义所有上下文绑定类的基类。
ContextMarshalException在尝试将对象封送过上下文边界失败时引发的异常。
ContextStaticAttribute指示静态字段的值是特定上下文的唯一值。
Convert将一个基本数据类型转换为另一个基本数据类型。
DataMisalignedException在从不是数据大小倍数的地址读取数据单元或将数据单元写入此类地址时引发的异常。
无法继承此类。
DBNull表示空值。
Delegate表示委托,委托是一种数据结构,它引用静态方法或引用类实例及该类的实例方法。
DivideByZeroException试图用零除整数值或十进制数值时引发的异常。
DllNotFoundException当未找到在DLL导入中指定的DLL时所引发的异常。
DuplicateWaitObjectException当对象在同步对象数组中不止一次出现时引发的异常。
EntryPointNotFoundException因不存在项方法而导致加载类的尝试失败时引发的异常。
Environment提供有关当前环境和平台的信息以及操作它们的方法。
无法继承此类。
EventArgsEventArgs是包含事件数据的类的基类。
Exception表示在应用程序执行期间发生的错误。
ExecutionEngineException当公共语言运行库的执行引擎中发生内部错误时引发的异常。
无法继承此类。
FieldAccessException当试图非法访问类中的私有字段或受保护字段时引发的异常。
FileStyleUriParser基于File方案的可自定义分析器。
FlagsAttribute指示可以将枚举作为位域(即一组标志)处理。
FormatException当参数格式不符合调用的方法的参数规范时引发的异常。
FtpStyleUriParser基于文件传输协议(FTP)方案的可自定义分析器。
GC控制系统垃圾回收器(一种自动回收未使用内存的服务)。
GenericUriParser用于分层URI的可自定义分析器。
GopherStyleUriParser基于Gopher方案的可自定义分析器。
HttpStyleUriParser基于HTTP方案的可自定义分析器。
IndexOutOfRangeException试图访问索引超出数组界限的数组元素时引发的异常。
无法继承此类。
InsufficientMemoryException当检测到没有足够的可用内存时引发的异常。
无法继承此类。
InvalidCastException因无效类型转换或显式转换引发的异常。
InvalidOperationException当方法调用对于对象的当前状态无效时引发的异常。
InvalidProgramException当程序包含无效Microsoft中间语言(MSIL)或元数据时将引发的异常。
这通常表示生成程序的编译器中有bug。
LdapStyleUriParser基于轻型目录访问协议(LDAP)方案的可自定义分析器。
LoaderOptimizationAttribute用于为可执行应用程序的主方法设置默认的加载程序优化策略。
LocalDataStoreSlot封装内存槽以存储本地数据。
无法继承此类。
MarshalByRefObject允许在支持远程处理的应用程序中跨应用程序域边界访问对象。
Math为三角函数、对数函数和其他通用数学函数提供常数和静态方法。
MemberAccessException访问类成员的尝试失败时引发的异常。
MethodAccessException非法尝试访问类中的私有方法或受保护的方法时引发的异常。
MissingFieldException试图动态访问不存在的字段时引发的异常。
MissingMemberException试图动态访问不存在的类成员时引发的异常。
MissingMethodException试图动态访问不存在的方法时引发的异常。
MTAThreadAttribute指示应用程序的COM线程模型为多线程单元(MTA)。
MulticastDelegate表示多路广播委托;即,其调用列表中可以拥有多个元素的委托。
MulticastNotSupportedException尝试组合两个基于Delegate类型而非MulticastDelegate类型的委托时引发的异常。
无法继承此类。
NetPipeStyleUriParser基于“Indigo”系统的NetPipe方案的分析器。
NetTcpStyleUriParser基于“Indigo”系统的NetTcp方案的分析器。
NewsStyleUriParser基于使用网络新闻传输协议(NNTP)的新闻方案的可自定义分析器。
NonSerializedAttribute指示可序列化类的某个字段不应被序列化。
无法继承此类。
NotFiniteNumberException当浮点值为正无穷大、负无穷大或非数字(NaN)时引发的异常。
NotImplementedException在无法实现请求的方法或操作时引发的异常。
NotSupportedException当调用的方法不受支持,或试图读取、查找或写入不支持调用功能的流时引发的异常。
Nullable支持可为其分配空引用(在VisualBasic中为Nothing)的值类型,如引用类型。
无法继承此类。
NullReferenceException尝试取消引用空对象引用时引发的异常。
Object支持.NETFramework类层次结构中的所有类,并为派生类提供低级别服务。
这是.NETFramework中所有类的最终基类;它是类型层次结构的根。
ObjectDisposedException对已释放的对象执行操作时所引发的异常。
ObsoleteAttribute标记不再使用的程序元素。
无法继承此类。
OperatingSystem表示有关操作系统的信息,如版本和平台标识符。
无法继承此类。
OperationCanceledException取消线程正在执行的操作时在线程中引发的异常。
OutOfMemoryException没有足够的内存继续执行程序时引发的异常。
OverflowException在选中的上下文中所进行的算术运算、类型转换或转换操作导致溢出时引发的异常。
ParamArrayAttribute指示方法在调用中将允许参数的数目可变。
无法继承此类。
PlatformNotSupportedException当功能未在特定平台上运行时所引发的异常。
Random表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。
RankException将维数错误的数组传递给方法时引发的异常。
ResolveEventArgs为TypeResolve、ResourceResolve和AssemblyResolve事件提供数据。
SerializableAttribute指示一个类可以序列化。
无法继承此类。
StackOverflowException因包含的嵌套方法调用过多而导致执行堆栈溢出时引发的异常。
无法继承此类。
STAThreadAttribute指示应用程序的COM线程模型是单线程单元(STA)。
String表示文本,即一系列Unicode字符。
StringComparer表示一种字符串比较操作,该操作使用特定的大小写以及基于区域性的比较规则或序号比较规则。
SystemException为System命名空间中的预定义异常定义基类。
ThreadStaticAttribute指示静态字段的值对于每个线程都是唯一的。
TimeoutException给进程或操作分配的时间过期时引发的异常。
TimeZone表示时区。
Type表示类型声明:
类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。
TypeInitializationException作为由类初始值设定项引发的异常周围的包装引发的异常。
无法继承此类。
TypeLoadException类型加载失败发生时引发的异常。
TypeUnloadedException试图访问已卸载的类时引发的异常。
UnauthorizedAccessException当操作系统因I/O错误或指定类型的安全错误而拒绝访问时所引发的异常。
UnhandledExceptionEventArgs为以下情况下引发的事件提供数据:
存在一个不是由应用程序域处理的异常。
Uri提供统一资源标识符(URI)的对象表示形式和对URI各部分的轻松访问。
UriBuilder为统一资源标识符(URI)提供自定义构造函数,并修改Uri类的URI。
UriFormatException当检测到无效的统一资源标识符(URI)时引发的异常。
UriParser分析新的URI方案。
这是一个抽象类。
UriTypeConverter将String类型转换为Uri类型,反之亦然。
ValueType提供值类型的基类。
Version表示公共语言运行库程序集的版本号。
无法继承此类。
WeakReference表示弱引用,即在引用对象的同时仍然允许对该对象进行垃圾回收。
2.System名空间的接口名空间的接口应该注意接口提供了各种规范,而许多类库提供的类中都继承了System名空间的接口,由于它们都具有了很容易理解的名,所以,在其他场合下遇到这些接口,应该能理解它们的基本作用。
System名空间的接口接口说明_AppDomain向非托管代码公开System.AppDomain类的公共成员。
IAppDomainSetup表示可以添加到AppDomain的实例的程序集绑定信息。
IAsyncResult表示异步操作的状态。
ICloneable支持克隆,即用与现有实例相同的值创建类的新实例。
IComparable定义通用的比较方法,由值类型或类实现以创建类型特定的比较方法。
IComparable定义由值类型或类实现的通用的比较方法,以为排序实例创建类型特定的比较方法。
IConvertible定义特定的方法,这些方法将实现引用或值类型的值转换为具有等效值的公共语言运行库类型。
ICustomFormatter定义一种方法,它支持对象值的自定义(用户定义)格式设置。
IDisposable定义一种释放分配的非托管资源的方法。
IEquatable定义一个通用的方法,由值类型或类实现以创建类型特定的方法,用于确定实例间的相等性。
IFormatProvider提供用于检索控制格式化的对象的机制。
IFormattable提供将对象的值格式化为字符串表示形式的功能。
IServiceProvider定义一种检索服务对象的机制,服务对象是为其他对象提供自定义支持的对象。
3.System名空间的结构名空间的结构从下表中可以看到,内置的值类型在栈中的组织就是结构类型。
System名空间的结构结构说明ArgIterator表示变长参数列表;即采用可变数量的参数的函数的参数。
ArraySegment分隔一维数组的一部分。
Boolean表示布尔值。
Byte表示一个8位无符号整数。
Char表示一个Unicode字符。
ConsoleKeyInfo描述按下的控制台键,包括控制台键表示的字符以及Shift、Alt和Ctrl修改键的状态。
DateTime表示时间上的一刻,通常以日期和当天的时间表示。
Decimal表示十进制数。
Double表示一个双精度浮点数字。
Enum为枚举提供基类。
Guid表示全局唯一标识符(GUID)。
Int16表示16位有符号的整数。
Int32表示32位有符号的整数。
Int64表示64位有符号的整数。
IntPtr用于表示指针或句柄的平台特定类型。
ModuleHandle表示模块的运行时句柄。
Nullable表示基础类型为值类型的对象,值类型与引用类型一样也可以分配空引用(在VisualBasic中为Nothing)。
RuntimeArgumentHandle引用变长参数列表。
RuntimeFieldHandle使用内部元数据标记表示一个字段。
RuntimeMethodHandleRuntimeMethodHandle是方法的内部元数据表示形式的句柄。
RuntimeTypeHandle表示使用内部元数据标记的类型。
SByte表示8位有符号整数。
Single表示一个单精度浮点数字。
TimeSpan表示一个时间间隔。
TypedReference描述既包含指向某位置的托管指针,也包含该位置可能存储的类型的运行时表示形式的对象。
UInt16表示16位无符号整数。
UInt32表示32位无符号整数。
UInt64表示64位无符号整数。
UIntPtr用于表示指针或句柄的平台特定类型。
Void为不返回值的方法指定返回值类型。
4.System名空间的委托名空间的委托System名空间的委托不多,但是都很重要,在SDK(软件开发工具包)环境中进行事件处理,必须知道系统预定义的委托。
System名空间的委托委托说明Action表示对指定的对象执行操作的方法。
AppDomainInitializer表示在应用程序域初始化时要调用的回调方法。
AssemblyLoadEventHandler表示处理AppDomain的AssemblyLoad事件的方法。
AsyncCallback引用在异步操作完成时调用的回调方法。
Comparison表示比较同一类型的两个对象的方法。
ConsoleCancelEventHandler表示将要处理System.Console的CancelKeyPress事件的方法。
Converter表示将对象从一种类型转换为另一种类型的方法。
CrossAppDomainDelegate由DoCallBack使用,用于跨应用程序域的调用。
EventHandler表示将处理不包含事件数据的事件的方法。
EventHandler表示将处理事件的方法。
泛型类型参数指定事件所生成的事件数据的类型。
Predicate表示定义一组条件并确定指定对象是否符合这些条件的方法。
ResolveEventHandler表示处理AppDomain的TypeResolve、ResourceResolve和AssemblyResolve事件的方法。
UnhandledExceptionEventHandler表示将处理