




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章C#根底知识知识点C#数据类型C#语法2.1C#设计理念自动资源回收机制 C#具有自动资源回收〔Automaticgarbagecollection〕机制,自动将不再被使用的内存回收,并交给操作系统重新配置。因此使用C#编写的程序不会出现内存泄漏〔MemoryLeak〕的现象。例外错误处理机制 C#结构化的例外错误处理提供一致性的错误处理机制。2.2面向对象程序类主要由三局部组成:属性:属性存储对象的信息。主要用来改进public成员变量的存取,让用户能够在外部组件存取内部数据时,多提供一层逻辑判断。方法:提供给外部可访问的接口函数,使之可以利用对象执行某种操作。事件:事件能够告知应用程序〔请指明是告知××〕发生了什么事情。C#有内置的语法和保存字可用来定义与处理事件,可以动态的链接和删除事件处理函数。此外,一个事件可以链接几个事件处理函数,而一个事件处理还属能够同时处理多个事件。2.3C#数据类型在C#中主要有两大类数据类型:值类型引用类型2.3.1值类型值类型包括:简单类型枚举类型结构类型值类型的分类值类型简单类型整型sbyte;byte;short;ushort;int;uint;long;ulong;char浮点类型float;double小数类型decimal布尔类型bool字符型char枚举类型enum结构类型简单类型整型C#中支持九种整型:sbyte、byte、short、ushort、int、uint、long、ulong和char。类型含义数值范围sbyte有符号的8位整数-128~127byte无符号的8位整数0~255short有符号的16位整数-32768~32767ushort无符号的16位整数0~32767int有符号的32位整数-2147483648~2147483648uint无符号的32位整数0~4294967295long有符号的64位整数-9223372036854775808~9223372036854775808ulong无符号的64位整数0~18446744073709551615char无符号的16位整数0~65535字符型字符型,也就是char类型,是一种特殊类型的整型,这是因为char类型与其他整数类型相比有以下两点不同之处:字符型实际是单个的Unicode类型,字长为16bits,可以通过三种方式为其赋值:charchrTmp=“A”;charchrTmp=“\x0065”;十六进制charchrTmp=“\u0065;unicode表示法字符型无法隐式地转换成其它任何类型。例如对于sbyte,byte和ushort这样能完全使用char类型代表其值的类型,隐式转换也不存在。但C#中支持显式转换char型,如:charchrTmp=(char)100;bytebtTmp=(byte)’A’;字符型中有以下转义符,见表。转移符含义\‘表示单引号\”表示双引号\\表示反斜杠\0表示空字符\a表示感叹号\b表示退格\f表示换页\n表示换行\r表示回车\t表示水平tab\v表示垂直tab浮点型类型取值范围说明float1.5*10ˆ-45~3.4*10ˆ38单精度浮点数,精确到小数点后面7位double5.0*10ˆ-324~1.7*10ˆ308双精度浮点数,精确到小数点后面15位或16位如果二元操作中的其中一个操作数为浮点类型,那么另外一个操作数是整型或浮点类型,运算规那么如下:如果一操作数是整型,那么该操作数被转换为另一操作数的浮点数类型;如果一操作数为double类型,那么另一操作数被转换成double类型,运算以double类型的精度和取值范围进行,并且所得结果也为double类型;其它情况下,运算至少将以float类型的取值范围和精度进行,并且所得结果也为float型。小数类型小数类型数值范围从1.0*10ˆ-28~7.9*10ˆ28,精确到小数点后面28位。对于小数类型的运算规那么如下:如果一操作数是小数类型,另一操作数是整型或小数类型,那么整型在运算前被转化为小数类型参与运算。如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太小的值,运算结果将会变成0。如果一个小数类型的算术运算产生了一个对于小数类型的格式来说太大的值,就会触发溢出错误。布尔型布尔型仅有true或false两个值,分别代表逻辑真和逻辑假。没有标准能实现布尔类型和其他类型的转换。枚举类型枚举类型是由一组特定的常量构成一种数据结构。所使用的类型只能是long、int、short、byte。默认类型是int。默认第一个元素的值是0,每一个连续的元素按1递增。也可以给元素直接赋值。结构类型使用结构的主要目的是创立小型的类,可以用来申明构造函数、常熟、字段、方法、属性、索引、操作符和嵌套类型。各种数据类型的默认值类型默认值sbyte、byte、short、ushort、int、uint、long、ulong0char‘\x0000’float0.0Fdouble0.0Ddecimal0.0Mboolfalse枚举类型0结构类型把所有值类型的域都设置为它们各自的默认值,把所有的引用类型的域赋为空2.3.2引用类型引用类型包括:类类型接口类型代表类型数组类型类类型〔class〕类类型定义了一种数据结构,这个数据结构中包含了数据成员包含数据、属性和事件等;函数成员包含方法、索引、操作符、构造函数和析构函数;以及嵌套类,并支持继承。在类中定义的数据成员、函数成员等局部可以被外部调用,但局部不能被外部存取,这是由所使用的成员存取修改器来决定的。在C#中由public、private、protected和internal式中存取修改器。Public:表示任何外部的类都可以不受限制的存取类。Private:表示只限定此类内部使用。Protected:表示除了让本身的类使用外,任何继承自此类的子类也可以存取。Internal:仅存在于C#中,表示在同一个应用程序或库中的所有类都可以存取。对象类型〔object〕对象类型是其他所有类型的根底类型。在C#中每一种类型都直接或间接的继承自System.Object。字符串类型〔string〕与C++相比,C#增强了对字符串的各种操作。字符串类型是直接从System.Object中继承而来的密封类,而且是final类,不能从它再派生类。String类型的值可以写成字符串文字的形式。赋值方式如下:stringstrTmp=“thisisabook.”;接口类型〔interface〕接口与类的最大差异在于一个接口声明一个只有抽象成员的引用类型,接口仅仅存在方法标志,但没有执行代码。当定义一个类时,如果类从接口派生,可以派生自多重接口;但是如果类从类派生,就只能从一个类派生。声明方法如例:interfaceinterfaceTmp{voidfunction1();}代表元类型〔delegate〕代表元类型其实就是面向对象的函数指针。因为在C#中没有指针,所有的东西都是对象,那么为了能在C#中提供C++中原有的函数指针功能,特提供了代表元类型,它是一种静态的方法或者对象实例,引用该对象的实例方法。C/C++中的指针只能访问静态的函数,代表元既能访问静态的方法,也能访问实例的方法。假设要使用代表元类型,需进行如下几个步骤:首先,定义delegate类型的函数签名,语法如下例所示:publicdelegatestringFunPointer(stringstrTmp);delegate是一个保存字,声明了一个函数的指针类型。其次,定义与delegate类型函数签名相同的函数,如:publicstaticstringFun1(stringstrTmp){ return“hello”+strTmp;}只要传入参数的类型、个数、顺序和delegate类型的函数相同,那么参数名称可以是不同的。然后,定义接收delegate类型参数的处理函数,如:publicstaticvoidMethod(FunPointerFunPointer1){ Console.WriteLine(FunPointer1(“Mary”));}最后,将上面的程序代码链接起来运行:FunPointerfp1=newFunPointer(Fun1);可以直接调用Method函数,并传入FunPointer变量当作传入参数,如:Method(fp1);数组类型〔Array〕数组类型继承自System.Array,而System.Array继承自System.Object。数组是包含一串相同类型的类型数据的集合,每个数组变量称作数组元素,这种类型也称作数组元素类型。数组的元素类型可以是任何类型,包括数组类型。所有数组的元素值通过数组名和下标来访问,数组的位数决定了相关数组元素的下标数,只有一个下标的数组称为一维数组,多于一个下标的数组称为多维数组。声明多维数组的方式如下:int[]a; //int型的一维数组int[,]a; //int型的二维数组int[,,]a; //int型的三维数组int[][]a; //int型的数组的数组int[][][]a; //int型的数组的数组的数组2.4C#语法C#语句具有如下几个特点:C#是区别大小。每一句都以分号结束。多个语句通过分号可以写在一行,不过不推荐,因为不清晰。声明变量在C#中声明变量时,要注意以下几点:变量的名称需以文字或下划线“_”开始。变量中不能使用空格。不能使用保存字,如char,int等。声明变量的语法是:变量类型变量名称[=初始值]。2.4.2C#根本语法运算符算术运算符+---------------------加----------------------减*---------------------乘/---------------------除%---------------------求余(即整除后的余数)逻辑运算符&---------------------按位与|---------------------按位或^---------------------按位异或~---------------------取反>>n-------------------右移n位<<n-------------------左移n位递增递减运算符++或--或+=或-=或*=或/=比较运算符>或<或==或!=或>=或<=条件判断if语句格式:if(布尔表达式)嵌入语句[else嵌入语句]例如:if(a>0){ a=-1;}else{ Console.WriteLine(a);}switch语句格式:switch〔表达式〕{case常量表达式:嵌入语句[default:嵌入语句]}switch用于多个可能的值,如果有一个匹配,那么执行相应代码,每句之后必须有break语句中断后面语句的执行。例如:switch(a){ case1: Console.WriteLine("1"); break; case2: Console.WriteLine("2"); break; case3: Console.WriteLine("3"); break; default: Console.WriteLine("default");}循环语句while循环格式:while(布尔表达式)嵌入语句例如:inta=1;while(a<20){ a+=a;}do-while循环格式:do嵌入语句while(布尔表达式)例如:inta=1;do{ a+=a;}while(a<20);dowhile循环与while循环类似,区别在于do-while循环至少执行一次循环体。for循环格式:for〔[初始化];[布尔表达式];[重复语句]〕嵌入语句例如:intj=1;for(inti=0;i<100;i++){ j++; Console.WriteLine("i="+i+"j="+j);}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论