文章插图
C#开发QTP脚本标誌数据类型基本数据类型:C#拥有比C/C++或者Java更广泛的数据类型.这些类型是bool、byte、ubyte、short、ushort、int、uint、long、ulong、float、double和decimal,像Java一样,所有这些类型都有一个固定的大小.又像C和C++一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字元变数包含的是一个16位的Unicode字元,C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字 。两个基本类:一个名叫object的类是所有其他类的基类 。而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它,无论何时在程式中写入一句带引号的字元串,编译器会创建一个string对象来保存它 。参数传递:方法可以被声明接受可变数目的参数.预设的参数传递方法是对基本数据类型进行值传递 。ref关键字可以用来强迫一个变数通过引用传递,这使得一个变数可以接受一个返回值 。out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值 。COM的集成:C#对Windows程式最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和伺服器端 。C#编写的类可以子类化一个已存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件 。这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网路服务,可用任何.NET语言子类化 。索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括弧中的数字来匿名引用(就象用数组下标一样)以外是相似的 。代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了 。代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中 。程式执行C#所开发的程式原始码并不是编译成能够直接在作业系统上执行的二进制本地代码 。与Java类似,它被编译成为中间代码,然后通过.NETFramework的虚拟机——被称之为通用语言运行库(CLR)——执行 。所有的.Net程式语言都被编译成这种被称为MSIL(Microsoft Intermediate Language )的中间代码 。因此虽然最终的程式在表面上仍然与传统意义上的执行档都具有“.exe”的后缀名 。但是实际上,如果计算机上没有安装.Net Framework,那幺这些程式将不能够被执行 。在程式执行时,.Net Framework将中间代码翻译成为二进制机器码,从而使它得到正确的运行 。最终的二进制代码被存储在一个缓冲区中 。所以一旦程式使用了相同的代码,那幺将会调用缓冲区中的版本 。这样如果一个.Net程式第二次被运行,那幺这种翻译不需要进行第二次,速度明显加快 。关键字abstractasbaseboolbreakbytecasecatchcharcheckeddecimaldefaultdelegatecontinuedoubledoelseenumeventexplicitfinallyfixedfloatforforeachgetgotoifimplicitconstinintinterfaceinternalislocklongnewnullobjectpartialoutnamespaceoverrideprivaterefreadonlypublicreturnprotectedshortsetstackallocsizeofstaticthisstructthrowtryswitchtypeofuintuncheckedulongunsafevoidushortusingvaluevirtualvolatilewherewhileyieldclasstrueexternfalsesbytesealed部分描述:abstract:可以和类、方法、属性、索引器及事件一起使用,标识一个可以扩展但不能被实体化的、必须被实现的类或方法 。as:一个转换操作符,如果转换失败,就返回null 。base:用于访问被派生类或构造中的同名成员隐藏的基类成员 。catch:定义一个代码块,在特定类型异常抛出时,执行块内代码 。checked:既是操作符又是语句,确保编译器运行时,检查整数类型操作或转换时出现的溢出 。const:标识一个可在编译时计算出来的变数值,即一经指派不可修改的值 。delegate:指定一个声明为一种委託类型 。委託把方法封装为可调用实体,能在委託实体中调用 。enum:表示一个已命名常量群集的值类型 。event:允许一个类或对象提供通知的成员,他必须是委託类型 。explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作,必须再转换时调用显示转换操作符 。extern:标识一个将在外部(通常不是c#语言)实现的方法 。finally:定义一个代码块,在程式控制离开try代码块后执行 。参见try和catch 。fixed:在一个代码块执行时,在固定记忆体位置为一个变数指派一个指针 。foreach:用于遍历一个群集的元素 。goto:一个跳转语句,将程式执行重定向到一个标籤语句 。implicit:一个操作符,定义一个用户定义的转换操作符,通常用来将预定义类型转换为用户定义类型或反向操作,隐式转换操作符必须在转换时使用 。interface:将一个声明指定为接口类型,即实现类或构造必须遵循的契约 。internal:一个访问修饰符 。namespace:定义一个逻辑组的类型和命名空间 。operator:用来声明或多载一个操作符 。out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化 。params:声明一个参数数组 。如果使用,必须修改指定的最后一个参数,允许可选参数 。readonly:标识一个变数的值在初始化后不可修改 。ref:标识一个参数值可能会受影响的参数 。sealed:防止类型被派生,防止方法和property被覆载 。sizeof:一个操作符,以byte为单位返回一个值类型的长度 。stackalloc:返回在堆上分配的一个记忆体块的指针 。struct:是一种值类型,可以声明常量、栏位、方法、property、索引器、操作符、构造器和内嵌类型 。throw:抛出一个异常 。try:异常处理代码块的组成部分之一 。try代码块包括可能会,抛出异常的代码 。参阅catch和finally关键字 。typeof:一个操作符,返回传入参数的类型 。unchecked:禁止溢出检查 。unsafe:标注包含指针操作的代码块、方法或类 。using:当用于命名空间时,using关键字允许访问该命名空间中的类型,而无需指定其全名 。也用于定义finalization操作的範围 。virtual:一个方法修饰符,标识可被覆载的方法 。volatile:标识一个可被作业系统、某些硬体设备或并发执行绪修改的attribute 。版本介绍C# 1.0-纯粹的面向对象在2003年5月,微软推出了Visual Studio .NET 2003,同时也发布了C#的改进版本——C# 1.1 。这一时期的C#(以下称为C# 1.x)提出了纯粹的面向对象概念 。C++并非纯面向对象的,为了和C兼容以及提供更高的执行效率,它保留了很多模组化的东西 。C#还通过类类型、值类型和接口类型的概念形成了统一的类型系统 。儘管C# 1.x提供了如此多的新鲜概念,但实际上,这些概念都是由CLI提出的 。因此当将一个C#源程式编译为执行档时,编译器做的工作相对而言并不多 。需要编译器代劳的是要将一个简单的委託定义语句翻译为一个继承System.MulticastDelegate类型定义 。C# 2.0-泛型编程新概念微软在2004年的6月份发布了Visual Studio2005的第一个Beta 版,同时向开发者展示了C#语言的2.0版本 。2005年4月,微软发布了Visual Studio 2005 Beta2,这已经是具备了几乎全部功能的VisualStudio,包括的产品有SQL Server2005、Team Foundation Server和TeamSuite 。这时的C#编译器已经能够处理C# 2.0中所有的新特性 。C# 2.0为开发者带来的最主要的特性就是泛型编程能力 。和面向对象思想一样,泛型思想也是一种已经成熟的编程思想,但依然是没有哪一种主流开发语言能够支持完备的泛型概念 。这主要是因为泛型的概念在一定程度上对面向对象概念进行冲击,同时,由于在编译期间对类型参数的完全检测很难做到,很多问题会被遗留到运行时 。C# 2.0别出心裁,对泛型类型参数提出了“约束”的新概念,并以优雅的语法体现在语言之中 。有了约束,结合编译器强大的类型推断能力,可以在编译时发现几乎所有“危险”的泛型套用 。