.Net平台XML编程基础_第1页
.Net平台XML编程基础_第2页
.Net平台XML编程基础_第3页
.Net平台XML编程基础_第4页
.Net平台XML编程基础_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

五.NET Xml下面介绍.NET平台的XML编程基础。1 .NET.NET是微软公司为了与Sun公司的Java/J2EE/EJB竞争,于2000年6月22日提出来的一种跨语言、跨平台、面向组件编程的新计算技术,是微软COM组件技术的一种发展。.NET适用于客户端程序、Web服务(Web Services)和因特网分布式应用,是生成、部署和运行托管应用程序和XML Web服务的一种多语言环境和可视化开发工具。微软的.NET技术,由(包含公共语言运行环境CLR和框架类库FCL的).NET框架(.NET Framework)和(托管应用程序开发平台)Visual Studio这两大部分组成。PC硬件Win32/64通用语言运行时CLR (CLI)MSMQ(信息队列)COM+(事务、分区、对象池)ADOIISVisual Studio基类库BCLADO.NET与XMLWeb服务用户界面ASP.NET微软中间语言MSIL (CIL).NET框架.NETC#VBC+JScriptPerlJ#Python公共语言规范CLS (CTS)框架类库FCL虚拟执行系统VES.NET技术1).NET框架.NET框架(.NET Framework)是微软为Windows平台设计的一种托管编程模型。这里的托管(managed)是指,程序的代码(元数据、MSIL),特别是程序中的数据和对象所对应内存的分配、指向和释放,全都由.NET的运行环境CLR来代为管理。托管是所有.NET程序的特点。托管代码具有许多优点,例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试和分析服务等。.NET框架的版本有:l .NET Framework 1.0:2002年1月5日推出,随Visual Studio .NET(2002)于2002年2月13日发布。为.NET框架的首个版本,含.NET框架的基本功能,主要由CLR、FCL和ASP.NET三部分组成。l .NET Framework 1.1:2003年4月1日推出,随Visual Studio .NET 2003于2003年5月20日发布。为1.0的升级版,增加了对内置ASP.NET控件和内置ODBC与Oracle数据库的支持、改变了安全性(允许以半可信方式执行视窗窗体程序集Windows Forms assemblies、允许在ASP.NET应用程序中的代码访问安全性)、增加了针对小型设备的紧凑版框架(.NET Compact Framework)、增加了对IPv6的支持、还改变了许多API。l .NET Framework 2.0:2005年11月7日推出,随Visual Studio 2005一起发布。在2.0版中,新增了一个针对本地应用程序的可更精细地控制多线程/内存分配和程序集装入的宿主(hosting)API、将对泛型(Generics)的语言支持被直接植入CLR中、提供了对AMD的x64和Intel的IA64等64位硬件平台的全面支持、许多新增和改进的ASP.NET Web控件以及新的ASP.NET个性化特征(如支持主题(themes)、外壳(skins)和网件(webparts)等)、增加了许多ADO.NET 的新功能(包括对用户定义类型 (UDT)、异步数据库操作、XML 数据类型、大值类型和快照隔离的支持,以及对允许应用程序通过 SQL Server 2005 支持多活动结果集 (MARS) 的新属性的支持等)、增加了与聪明个人对象技术(Smart Personal Objects Technology)有关的微型版框架(.NET Micro Framework)。l .NET Framework 3.0:2006年11月6日推出,随Windows Vista一起发布。3.0在2.0的基础上,增加了如下4个主要的新模块:u WPF(Windows Presentation Foundation,视窗表示基础)一种基于XML和(使用3D计算机图形硬件和Direct3D技术的)矢量图形的新用户界面子系统和API;u WCF(Windows Communication Foundation,视窗通信基础)一种构建面向服务应用程序的统一编程模型,允许像Web服务一样,在程序之间进行本地或远程的交互操作;u WF(Windows Workflow Foundation,视窗工作流基础)允许使用工作流来创建任务自动化(task automation)和集成事务处理(integrated transactions);u WCS(Windows CardSpace,视窗卡空间)一种软件组件,可安全存储个人数字身份(persons digital identity),并为在特定事务(如登录网站)中选择身份提供统一的界面。l .NET Framework 3.5:2007年11月16日随Visual Studio 2008发布。对3.0版的主要改变有:u C# 3.0和VB.NET 9.0编译器中的新特性;u 增加对表达式树和方法的支持;u 扩展方法;u 表达式树在运行时表示高级源代码;u 具有静态类型引用的匿名类型;u LINQ(Language Integrated Query,语言集成查询);u 支持ADO.NET分页;u ADO.NET同步API;u 异步网络I/O API;u P2P网络栈,包含托管PNRP(Peer Name Resolution Protocol,端名解析协议)解析器;u WMI(Windows Management Instrumentation,视窗管理设备)和活动目录API的托管封装;u 增强的WCF和WF运行时(库),允许WCF使用POX和JSON数据,还将WF工作流揭示为WCF服务;u 支持HTTP管线和syndication feeds;u 包含ASP.NET AJAX;u 新命名空间System.CodeDom。.NET框架栈.NET框架主要由运行环境(库/时)CLR和类库FCL两个部分组成。参见下列图示。 托管应用程序操作系统硬件CLRIIS非托管应用程序ASP .NET自定义对象库托管Web应用程序FCL.NET框架环境PC机硬件操作系统(Win32/64/)公共语言运行时(CLR)托管应用程序ASP.NETWindows窗体XML Web服务企业服务ADO.NET其他.NET框架类库(FCL).NET框架WPFWCFWFWCSLINQ实体框架.NET框架3.5的构成计算机硬件操作系统(Winows/Unix/Linux/MacOS等)Java虚拟机(VM)应用程序JSPSwingJAX-WSEJBJDBC其他标准Java包Java环境Java环境的构成可以将.NET框架与Java环境加以对照和比较,二者有着许多类似的地方:CLR似VM而FCL似标准Java包。只是Java早已广泛应用于各种计算机平台,而.NET目前还主要局限于Windows平台;不过Java环境只能使用Java语言,而.NET则可以使用C#、VB、VC、J#、JScript等各种编程语言与工具,真正做到了跨语言。l CLR(Common Language Runtime,调用语言运行库/公共语言运行时) 该运行时/库在组件的运行时和开发时的操作中都起着很大作用:n 在组件运行时,运行库除了负责满足此组件在其他组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。n 在开发时,运行库的作用稍有变化;由于做了大量的自动处理工作(如内存管理),运行库使开发人员的操作非常简单,尤其是与今天的 COM 相比。特别是反射等功能显著减少了开发人员为将业务逻辑转变为可重用组件而必须编写的代码量。l FCL(Framework Class Library,框架类库) 该框架为开发人员定义并提供了统一的、面向对象的、分层的和可扩展的类库集,其中最主要的是供应用程序编写者使用的.NET基类库(BCL, Base Class Library)FCL中的System子命名空间。通过创建跨所有编程语言的公共 API 集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript、Visual Basic 到 C+、J#、C#的所有编程语言(通过托管扩展)具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。CLR类加载器JIT编译器代码管理器垃圾回收器安全引擎调试引擎类型检查器异常管理器线程支持COM编组器FCL支持 在第一次被运行时语言编译器源代码MSIL和元数据JIT编译器本地代码编译运行CLR的构成托管代码的编译与运行各种语言的托管程序源代码,都被对应的语言编译器翻译为统一的MSIL(MicroSoft Intermediate Language,微软中间语言)。MSIL是一组可以有效地转换为本机代码(native code)且独立于 CPU 的指令,它包括用于加载、存储和初始化对象以及调用对象方法的指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的指令。MSIL是.NET跨语言跨平台的基础。托管代码(managed code)被编译成MSIL后,就完全失去了它所使用的源语言特征。因此,各种语言(如C#、VB、VC、J# 和JScript等)所编写的托管程序,在.NET框架下都具有几乎一样的操作功能和执行效率。这得益于MSIL所遵循的CTS(Common Type System,公共类型系统)及其子集与用法常规CLS(Common Language Specification,公共语言规范),这些将在下面介绍。当语言编译器产生MSIL时,它也产生元数据(metadata)。元数据描述代码中的类型,包括每种类型的定义、成员的签名、代码引用的成员和运行库在执行时使用的其他数据。MSIL(或本机代码)和元数据被封装在一个PE(Portable Executable,可移植可执行) 文件中,文件中的元数据以及MSIL的存在,使代码能够描述自身。这意味着不再需要类型库或IDL(Interface Definition Language,接口定义语言),CLR在执行过程中可从该文件中查找并提取所需的元数据。元数据对(作为组件的)托管程序的装载和运行,起着十分重要的作用。为了使代码可最终可在计算机上运行,必须先将MSIL转换为特定于CPU的代码,这通常是通过JIT(Just-In-Time,即时) 编译器来完成的。所谓即时编译器,是指CLR只是在托管程序被第一次实际执行时,才将其编译成本地代码(参见图8-6)。如果一个托管程序在安装后从未被执行过,则不会被CLR翻译成本地代码;如果一个托管程序在安装后被多次执行,也只需要被翻译(成本地代码)一次即可。JIT编译器所产生的本地代码,显然比每次运行都需要靠VM解释执行的Java字节码更快速和高效。而且它比其他非托管语言编译器所直接产生的本地可执行代码也要快速和高效,因为它可以根据用户当前计算机平台中CPU的性能,来动态产生优化的本地代码。元语言使得托管程序是自描述的,MSIL使得托管程序可以跨语言,而JIT编译器则使得托管程序可以跨平台。托管代码一般被封装在程序集(assembly)内,它既可是PE可执行程序,也可是DLL动态连接库。.NET中的托管代码程序集,可以视为微软COM组件的一种发展。所以.NET本身,也是一种更高级、更有效的组件技术,它完全彻底地解决了COM在跨语言、跨平台、自我描述、安全可靠和版本部署等方面所存在的种种问题。CLR是国际标准(ECMA-335和ISO/IEC 23271)CLI(Common Language Infrastructure,公共语言基础设施)在Windows平台上的一种具体实现。而CLI包含CTS(Common Type System,公共类型系统)和CIL(Common Intermediate Language,公共中间语言)两个主要组成部分。前面提到过的MSIL,也是CIL的一种具体实现。2)Visual Studio .NET开发平台Visual Studio .NET是基于.NET框架软件的开发平台,是.NET的主要组成部分。在VS.NET中集成了Visual Basic、C#、J#和Visual C+等编程语言,也支持脚本语言JScript。其中,C# 是微软公司于2000年7月自己创造的一种类似于Java的编程语言,Visual C# 随VS.NET 1.0一起正式推出;Visual J# 则是随VS.NET 2003推出的一种Java的变种,是原来Visual J+的发展;JScript则是JavaScript的微软变种。各种.NET编程语言中,C# 与.NET结合得最紧密,是.NET的首选语言;微软一贯重视(比尔盖茨的看家本领Basic的发展)Visual Basic,在.NET中也不例外,所以在MSDN帮助文档中,往往只有C# 和VB的例子,而没有VC的。2002年2月13日微软公司推出了Visual Studio .NET(2002)、2003年5月20日推出了Visual Studio .Net 2003、2005年11月7日推出了Visual Studio 200、2007年11月16日推出了Visual Studio 2008。Visual Studio 2008集成开发环境Web窗体工具Windows窗体工具XML Web服务工具错误调试多语言支持数据访问设计开发调试部署访问帮助文档Visual Studio 2008Visual Studio 2008项目设计与规划创建新项目创建用户界面及编写代码测试与调试生成部署Visual Studio 2008开发流程微软公司之所以推出.NET框架,主要是为了与Sun公司的Java平台竞争。虽然微软公司号称.NET框架是跨平台和跨语言的,但是目前只有Windows平台的实现(也有人想把.NET移植到Linux上,但至今没有完成)。由于Sun公司收回了微软公司对Java语言的使用权,所以.NET框架的多语言环境中也不包括Java这一世界通用的网络编程首选语言,而是以微软从Java克隆过来的C#为主,同时也强调微软自己的VB、J#和JScript,虽然也支持通用的C+,但必须进行微软的托管扩展(MC+或C+/CLI)。总之,到目前为止,.NET框架还是一种局限于Windows操作系统,且只能使用微软公司自己的几种编程语言的一种分布式计算平台。2FCL.NET框架为开发人员定义并提供了统一的、面向对象的、分层的和可扩展的类库集FCL(Framework Class Library,框架类库),其中主要是System命名空间下的.NET基类库(BCL, Base Class Library)。通过创建跨所有编程语言的公共API集,公共语言运行库使得跨语言继承、错误处理和调试成为可能。从 JScript、Visual Basic 到 C+、J#、C# 的所有编程语言(通过托管扩展)具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。.NET Framework类库是一个由Microsoft .NET Framework SDK中包含的类、接口和值类型组成的库。该库提供对系统功能的访问,是建立.NET Framework应用程序、组件和控件的基础。该类库采用命名空间来组织和使用(源自ISO C+,似Java中的包)。.NET Framework 1.0版类库提供的命名空间共有100个:5个Microsoft型和95个System型。.NET Framework 1.1版类库提供的命名空间共有104个(比1.0版增加了4个):5个Microsoft型和99个System型。1.1版新增的4个System型命名空间分别为:System.Data.Odbc、System.Data.OracleClient、System.Data.SqlServerCe和System.Enterprise Services.Internal。.NET Framework 2.0版类库提供的命名空间共有195个(比1.1版增加了91个):1个默认命名空间、1个Accessibility 命名空间、1个IEHost.Execute命名空间、32个Microsoft型命名空间、160个System型命名空间。.NET Framework 3.0版类库提供的命名空间共有304个(比2.0版增加了109个)(参见图8-7):1个默认命名空间、1个Accessibility命名空间、1个IEHost.Execute命名空间、51个Microsoft型命名空间(参见下图)、1个Microsoft_VsaVb命名空间、1个RegCode命名空间、247个System型命名空间(参见图8-8)、1个UIAutomationClientsideProviders命名空间。.NET Framework 3.5版类库提供的命名空间共有334个(比3.0版增加了30个):Accessibility、IEHost、Microsoft_VsaVb、RegCode、UIAutomationClientsideProviders型命名空间各1个,Microsoft型命名空间58个、System型命名空间271个。System命名空间下的.NET类库又被称为BCL(Base Class Library,基类库)。BCL271个FCL(334个)(默认)AccessibilityIEHostMicrosoftRegCodeSystemUIAutomationClientsideProvidersSystem.Diagnostics.SymbolStoreExecuteMicrosoft_VsaVbWindowsMobileAspnetXmlCodeDom 58个NET框架3.5中的FCL命名空间(绿色/红色分别为2.0/3.0版新增的一级子空间,3.5未增加新的一级子空间)l 默认命名空间ISymWrapper.dll中的默认命名空间提供了对System.Diagnostics.SymbolStore命名空间的内部支持。该命名空间提供的类允许读取和向MSIL映射写入调试符号信息(如源行)。面向 .NET Framework 的编译器可以将调试符号信息存储到程序员的数据库 (PDB) 文件中。调试器和代码探查器工具可以在运行时读取调试符号信息。l Accessibility是COM可访问(accessibility,可达性)界面的托管封装的一部分。l IEHost.Execute含IE远程执行类IEExecRemote。l Microsoft命名空间用于操作系统和编程语言,不能为普通应用程序所利用。它包括58个子孙空间。图8-8是它的全部一级子空间(字母序)。MicrosoftAspnetBuildCsharpJScriptSqlServerVisualBasicVsaWin32WindowsCEVisualCWindowsMobileCLRAdminIEInkPowerShell StylusInput WebWindowsManagementConsoleServiceModel图8-8 FCL中Microsoft命名空间的一级子空间(绿色/红色/蓝色分别为2.0/3.0/3.5版新增的一级子空间)BCL命名空间(类)提供对数据类型转换、方法参数操作、数学计算、远程和本地程序调用、应用程序环境管理、以及对托管和非托管应用程序的监管等操作的支持和服务。主要的BCL命名空间有:SystemCodeDom Collections GlobalizationConfigurationDataDeploymentMedia DirectoryServices DrawingDiagnostics EnterpriseServices ComponentModelIOIdentityModelManagementMessagingNetPrinting Reflection Resources Runtime Security ServiceModel ServiceProcess Speech Text Threading Timers Transactions WebWindows XmlWorkflow AddInLinqFCL中System命名空间(BCL)的一级子空间(绿色/红色/蓝色分别为2.0/3.0/3.5版新增的一级子空间)l System包含用于定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基础类和基类l System.Data基本上由构成ADO.NET结构的类组成。ADO.NET结构使您可以生成可用于有效管理多个数据源中的数据的组件。在断开连接的方案(如Internet)中,ADO.NET提供了一些可以在多层系统中请求、更新和协调数据的工具。ADO.NET结构也可以在客户端应用程序(如Windows窗体)或ASP.NET创建的 HTML 页中实现l System.Drawing提供对GDI+基本图形功能的访问。System.Drawing.Drawing2D、System.Drawing.Imaging和System.Drawing.Text命名空间提供了更高级的功能l System.IO包含允许对数据流和文件进行同步和异步读写的类型l System.Web.Services包含使您可以利用ASP.NET和XML Web services客户端来创建XML Web services的类。XML Web services是一些应用程序,它们提供了在使用标准协议(如HTTP、XML、XSD、SOAP和WSDL)的松耦合环境下进行消息交换的能力。利用XML Web services,可以在异质环境下的公司内部和公司之间生成模块化应用程序,使它们与各种各样的实现、平台和设备交互操作。这些应用程序基于SOAP的XML消息的各部分可以是严格定义的(结构化和类型化)或松散定义的(使用任意XML)。这些消息能够随时间而发展,并且不会破坏协议,这种能力对于作为未来Web构造块的XML Web services的灵活性和可靠性来说是最根本的l System.Web.UI提供使您可以创建以Web页上的用户界面形式出现在Web应用程序中的控件和页的类和接口。此命名空间包括Control类,该类为所有控件(不论是HTML控件、Web控件还是用户控件)提供一组通用功能。它还包括Page控件,每当对Web应用程序中的页发出请求时,都会自动生成此控件。另外还提供了一些类,这些类提供 Web 窗体服务器控件数据绑定功能、保存给定控件或页的视图状态的能力,以及对可编程控件和文本控件都适用的分析功能。子命名空间有Design、Design.WebControls、UI.HtmlControls、MobileControls和WebControls等l System.Windows.Forms包含用于创建基于Windows的应用程序的类,这些应用程序可以充分利用Microsoft Windows操作系统中的丰富用户界面功能。其子命名空间Design包含支持Windows窗体组件的设计时配置和行为的类。这些类包括:提供Windows窗体组件(即一组设计时服务)支持的设计器类、用于配置特定属性类型的UITypeEditor类,以及用于导入ActiveX控件的类l System.Xml提供基于标准的XML处理支持l System.Xml.Schema包含提供基于标准的XML模式定义语言(XSD)模式支持的XML类l System.Xml.Serialization包含用于将对象序列化为XML格式的文档或流的类l System.Xml.XPath包含XPath分析器和计算引擎。它支持W3C XML路径语言(XPath) 1.0版建议(/TR/xpath)l System.Xml.Xsl提供可扩展样式表转换(XSLT)转换支持。它支持W3C XSL转换(XSLT)1.0版建议使用命名空间时需要加关键字using namespace,并将多级命名空间的句点分隔符.换成双冒号:。还需要在使用命名空间的前面,加上使用对应的动态链接库,形式似包含头文件,但关键字改为using,且保持多级命名空间的句点分隔符.不变。例如:#using using namespace System;using namespace System:Xml;.NET框架中类,都是托管类。一般只能创建托管类对象的指针,而不能直接创建对象本身。另外,对类中的方法和属性的使用,也要采用:分隔符,例如:String filename = info.xml;XmlTextReader reader = new XmlReader(filename);reader-WhitespaceHandling = WhitespaceHandling:None;Console:WriteLine(nOriginal Document 0:n, filename);下面只列出我们例子中常用的两个命名空间以及里面最常用的几个类的内容: System命名空间的层次结构,以及其中的基础数据类型类、Console 类和String类的成员; System.Xml命名空间的层次结构,以及其中的XmlTextReader、XmlTextWriter、XmlValidatingReader和XmlDocumentConsole等类的成员。1)System命名空间下面是System常用命名空间的类层次结构:System.Object System.Array - System.ICloneable, System.Collections.IList, System.Collections.ICollection, System.Collections.IEnumerable System.Console System.Delegate System.Exception System.String - System.IComparable, System.ICloneable, System.IConvertible, System.Collections.IEnumerable System.ValueType System.ArgIterator System.Boolean - System.IComparable, System.IConvertible System.Byte - System.IComparable, System.IFormattable, System.IConvertible System.Char - System.IComparable, System.IConvertible System.DateTime - System.IComparable, System.IFormattable, System.IConvertible System.Decimal - System.IFormattable, System.IComparable, System.IConvertible System.Double - System.IComparable, System.IFormattable, System.IConvertible System.Enum System.Guid - System.IFormattable, System.IComparable System.Int16 - System.IComparable, System.IFormattable, System.IConvertible System.Int32 - System.IComparable, System.IFormattable, System.IConvertible System.Int64 - System.IComparable, System.IFormattable, System.IConvertible System.IntPtr - System.Runtime.Serialization.ISerializable System.RuntimeArgumentHandle System.RuntimeFieldHandle - System.Runtime.Serialization.ISerializable System.RuntimeMethodHandle - System.Runtime.Serialization.ISerializable System.RuntimeTypeHandle - System.Runtime.Serialization.ISerializable System.SByte - System.IComparable, System.IFormattable, System.IConvertible System.Single - System.IComparable, System.IFormattable, System.IConvertible System.TimeSpan - System.IComparable System.TypedReference System.UInt16 - System.IComparable, System.IFormattable, System.IConvertible System.UInt32 - System.IComparable, System.IFormattable, System.IConvertible System.UInt64 - System.IComparable, System.IFormattable, System.IConvertible System.UIntPtr - System.Runtime.Serialization.ISerializable System.Void2)基础数据类型类System命名空间中的基础数据类型类类别类名说明C+ 托管扩展数据类型整数Byte8 位的无符号整数charSByte8 位的有符号整数,不符合 CLSsigned charInt1616 位的有符号整数shortInt3232 位的有符号整数int 或longInt6464 位的有符号整数_int64UInt1616 位的无符号整数,不符合 CLSunsigned shortUInt3232 位的无符号整数,不符合 CLSunsigned int 或unsigned longUInt6464 位的无符号整数,不符合 CLSunsigned _int64浮点Single单精度(32 位)浮点数字floatDouble双精度(64 位)浮点数字double逻辑Boolean布尔值(真或假)bool其他CharUnicode(16 位)字符wchar_tDecimal96 位十进制值DecimalIntPtr大小取决于基础平台(32 位平台上为 32 位值,64 位平台上为 64 位值)的有符号整数IntPtr 无内置类型UIntPtr大小取决于基础平台的无符号整数(32 位平台上为 32 位值,64 位平台上为 64 位值),不符合 CLSUIntPtr 无内置类型类对象Object对象层次结构的根Object*StringUnicode 字符的不变的定长串String*3)Console类System.Object System.Consolepublic _gc _sealed class Console / 其中gc = garbage collection垃圾回收/ _sealed(密封的)关键字指定该类不能成为基类或该虚方法不能被重写Console类的成员l 公共属性n Error 获取标准错误输出流(static TextWriter*)n In 获取标准输入流(static TextReader*)n Out 获取标准输出流(static TextWriter*)l 公共方法n OpenStandardError 获取标准错误流n OpenStandardInput 获取标准输入流n OpenStandardOutput 获取标准输出流n Read 从标准输入流读取下一个字符(static int Read() throw IOException;)n ReadLine 从标准输入流读取下一行字符(static String* ReadLine() throw IOException, OutOfMemoryException;)n SetError 将 Error 属性设为指定的TextWritern SetIn 将 In 属性设置为指定的TextReadern SetOut 将 Out 属性设置为指定的TextWritern Write 将指定的信息写入标准输出流n WriteLine 将指定的数据(后跟当前行结束符)写入标准输出流其中,Write和WriteLine方法的常用格式为:static void WriteLine(String* format, Object* arg0, Object* arg1, .)throw IOException, ArgumentNullException, FormatException;语义同String.Format 方法:public: static String* Format(String* format, Object* arg0, Object* arg1, .)throw ArgumentNullException, FormatException;里面的格式化字符串format的常用形式为S”.0.1.”,其中的i对应于第i个输出对象。如果输出的对象是普通数值变量,还需要包入盒子_box中(用于从现有 _value 类对象创建托管对象,称之为“装箱”过程)。例如:Console:Write(S0 (1)2, _box(i), _box(reader-NodeType), reader-Name);Console:WriteLine(SnNot well-formed error at (0, 1):nt2, _box(e-LineNumber), _box(e-LinePosition), e-Message);其中格式化字符串前的字母S,用于将普通的单字节字符串,转化为Unicode的双字节String字符串。这与在COM组件编程中,用L字母将单字节字符串,转化为双字节的BSTR串是类似的。4)String 类System.Object System.StringSerializable / 可序列化的类public _gc _sealed class String : public IComparable, ICloneable, IConvertible, IEnumerableString类的成员l 公共构造函数n String 初始化 String类的新实例(常见的为String(char* value); 或直接赋初值String* str = “.”;)l 公共字段n Empty 表示空字符串,为只读字段l 公共属性n Chars 获取此实例中位于指定字符位置的字符n Length 获取此实例中的字符数l 公共方法n Clone 返回对此String实例的引用n Compare 比较两个指定的String对象n CompareOrdinal 通过计算每个字符串中相应Char对象的数值来比较两个String对象n CompareTo 将此实例与指定的对象进行比较n Concat 连接String的一个或多个实例,或Object的一个或多个实例的值的String表示形式n Copy 创建一个与指定的String具有相同值的String的新实例n CopyTo 将指定数目的字符从此实例中的指定位置复制到Unicode字符数组中的指定位置n EndsWith 确定此实例的末尾是否与指定的String匹配n Equals 确定两个String对象是否具有相同的值n Format 将指定的String中的每个格式项替换为相应对象的值的文本等效项n GetEnumerator 检索一个可以循环访问此实例中的每个字符的对象n GetHashCode 返回该实例的哈希代码n GetType(从Object继承)获取当前实例的Typen GetTypeCode 返回类String的TypeCoden IndexOf 报告String在此实例中的第一个匹配项的索引或一个或多个字符的索引n IndexOfAny 报告指定Unicode字符数组中的任意字符在此实例中第一个匹配项的索引n Insert 在此实例中的指定索引位置插入一个指定的String实例n Intern 检索系统对指定String的引用n IsInterned 检索对指定String的引用n Join 在指定String数组的每个元素之间串联指定的分隔符String,从而产生单个串联的字符串n LastIndexOf 报告指定的Unicode字符或String在此实例中的最后一个匹配项的索引位置n LastIndexOfAny 报告在Unicode数组中指定的一个或多个字符在此实例中的最后一个匹配项的索引位置n PadLeft 右对齐此实例中的字符,在左边用空格或指定的Unicode字符填充以达到指定的总长度n PadRight 左对齐此字符串中的字符,在右边用空格或指定的Unicode字符填充以达到指定的总长度n Remove 从此实例中的指定位置开始删除指定数目的字符n Replace 将此实例中的指定Unicode字符或String的所有匹配项替换为其他指定的Unicode字符或Stringn Split 标识此实例中的子字符串(它们由数组中指定的一个或多个字符进行分隔),然后将这些子字符串放入一个String数组中n StartsWith 确定此实例的开始处是否与指定的String匹配n Substring 从此实例检索子字符串n ToCharArray 将此实例中的字符复制到Unicode字符数组n ToLower 返回此String的小写形式的副本n ToString 将此实例的值转换为Stringn ToUpper 返回此String的大写形式的副本n Trim 从此实例的开始位置和末尾移除一组指定字符的所有匹配项n TrimEnd 从此实例的结尾移除数组中指定的一组字符的所有匹配项n TrimStart 从此实例的开始位置移除数组中指定的一组字符的所有匹配项l 公共运算符n 相等运算符= 确定两个指定的String对象是否具有同一值n 不等运算符!= 确定两个指定的Stri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论