




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C#程序开发基础C#语法入门,数据类型常量和变量运算符和表达式类型转换数组和枚举,2.1数据类型,所谓数据类型,就是指数据的种类。在应用程序中,要使数据能被计算机识别并处理,需要将数据分为不同的类型,这样的好处是存储和计算方便。比如在对姓名和地址的处理中需要使用字符,在对货币和数量的处理中又需要使用数字或不同精度的小数,这些数据都是不同类型的数据。如姓名是“张三”为字符型、年龄是25为整型等。为什么要定义数据类型呢?之所以要定义数据类型,是因为计算机是没有思维的,你只有告诉它,他才知道这是什么。比如你定义“inta”,它才知道a是一个整数,否则计算机就识别不出来它是个什么东西而出错。,2.1.1值类型和引用类型概述,C#的数据类型分为值类型、引用类型和指针类型(PointerType)3大类。值类型包括简单类型、结构类型和枚举类型。引用类型包括类类型、接口类型、委托类型和数组类型。指针类型只能用于不安全模式。值类型的数据存储在内存的堆栈中,可以提供快速访问。如果变量是值类型的,这个变量就包含实际数据,在一个独立的内存区域保存自己的值,如果在代码中修改其值后,在内存中会保存修改后的值。C#中大多数基本数据类型如:整型、字符型、浮点型、布尔型等都属于值类型,结构、枚举也属于值类型。,引用类型指向存储在内存堆中的数据的指针或引用。与纯粹的地址不同,引用总是指向一个对象,而且这个对象具有指定的类型,并且在堆上分配了地址。字符串、数组、接口、类都属于引用类型。,2.1.2值类型,C#语言的值类型包括整数类型、浮点数类型、布尔类型、字符类型等简单类型以及枚举类型和结构类型。下面介绍简单类型,枚举在2.5节中介绍,结构在4.4节中介绍。,整数类型,整数类型的变量值为整数。计算机语言提供的整数类型的值总是在一定范围之内。根据数据在计算机内存中所占的位数来划分,C#有8种整数类型的数据,这些数据及其在计算机中表示整数的范围如下表所示。,2.浮点数类型和十进制类型,浮点数类型又称为实数类型,是指带有小数部分的数字。C#支持两种浮点数类型:单精度(float)和双精度(double)。它们的差别在于取值范围和精度不同。浮点数类型数据的特征如下表所示。数据类型含义取值范围有效数字位数float32位浮点数1.510-453.410387double64位浮点数5.010-3241.7103081516,3.字符类型,在C#中,字符常量是用单引号(即撇号)括起来的一个字符,如a、x、D、?、$等都是字符常量,注意,a和A是不同的字符常量。charc1=X;/将字符X赋给字符型变量c1除了以上形式的字符常量外,C#还允许用一种特殊形式的字符常量,即以“”开头的字符序列。它们一般实现一定的控制功能,并没有一定的字型,这种非显示字符难以用一般形式的字符表示,故规定用这种特殊形式表示,这些形式的字符也称为“转义字符”。,4.布尔类型,布尔类型变量只有两种取值:true(代表“真”)和false(代表“假”),并且true值不能被其他任何非0值所代替。boolflag=true;/正确boolflag=1;/错误,不能将一个整型数据赋给布尔类型的变,【范例2-1】,已知圆的半径为12厘米,计算圆的面积。在VisualStudio2008中新建C#控制台程序,项目名为Circle;在Program.cs的Main方法中输入以下代码。完整的代码如下:decimalpi=3.14159M;/字母M表示数据是decimal类型intr=12;/定义int型变量r表示圆的半径decimals=0;/用来存放圆的面积s=pi*r*r;/计算圆的面积Console.WriteLine(“圆的半径是0,n圆的面积是:1”,r,s);/在控制台输出结果Console.ReadKey();/暂停运行,按任意键继续,2.1.3引用类型,C#中的值类型比较简单,对更加复杂的数据处理效率很低。C#的引用类型主要用来描述结构复杂、抽象能力比较强的数据,它与值类型数据是相并列的。同为引用类型的两个变量,可以指向同一个对象,也可以针对同一个变量产生作用,或者被其他同为引用类型的变量所影响。类类型、接口类型、委托类型和数组类型属于引用类型。下面介绍字符串类型,其他引用类型将在2.5节和第4、5章分别介绍。字符串是一种数据类型,一种类别,即它属于引用类型,还可以视为一个由字符组成的数组。使用string来声明字符串变量,字符串值放在一对双引号中,例如:stringname=“Tom”;关于字符串的详细操作,将在3.4节详细介绍。,第2章C#程序开发基础C#语法入门,数据类型常量和变量运算符和表达式类型转换数组和枚举,2.2常量与变量,常量和变量代表在程序中的数据,是程序运行不可缺少的一部分,下面我们介绍常量和变量的使用。,2.2.1变量,变量的声明语法如下。访问修饰符变量修饰符变量的数据类型变量名表其中【访问修饰符】和【变量修饰符】都是可以省略,在4.1节中将给出详细介绍。变量声名和赋值如下所示:privateintx;/声明x为整型变量,private可以省略x=10;/变量的赋值,让变量x的值为10stringname=”John”;/声明一个字符串变量name,值为John也可以在声明变量的同时赋值,如:intx=10;可以在一行声明多个变量,如:intx=3,y=8;/不同变量用逗号隔开。变量命名规则:变量名,2.2.1常量,常量就是在程序运行过程中其值固定不变的量,即在程序执行期间,常量的值不会发生改变。其格式如下:访问修饰符号const类型常量表达式;其中【访问修饰符号】都是可以省略。常量的修饰符可以是new、public、protected、internal、private。常量的表达式表示常量的名字。如下所示:publicconstintx=3,y=8;,2.2.3隐式类型的局部变量,隐式类型的局部变量又叫匿名变量,是C#3.0版本中引入的一个新用法,使用var声明。可以用var声明任何类型的局部变量,它只是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。语法如下:var变量名称=变量值;例如:vari=8;/局部变量i作为整型数据被编译vars=“HelloC#!”;/局部变量s作为字符串数据被编译,【范例2-2】定义常量和变量,熟悉常量、变量的使用。,第2章C#程序开发基础C#语法入门,数据类型常量和变量运算符和表达式类型转换数组和枚举,2.3运算符和表达式,C#语言中的表达式类似于数学运算中的表达式,用运算符把操作对象连接起来的式子就是表达式,表达式在经过一系列运算后得到一个运算结果,结果的类型由参加运算的操作对象的数据类型决定。运算符是表示各种不同运算的符号。在程序设计语言中运算是指对各种数据进行处理。比如表示加法运算就用“+”运算符。,2.3.1一元运算符,一元运算符的操作数只有一个。常见的一元运算符包括自加运算符“+”、自减运算符“-”和逻辑非“!”。+可将操作数加1,-可将操作数减1,逻辑非是将表达式的值取反。自加、自减运算符在表达式前和表达式后的结果是不一样的,自加和自减运算符其实是二元运算符的简化写法n+;等价于n=n+1;,C#中还有其他的简化写法,如下表所示。简化运算符等价表达式简化运算符等价表达式n+和+n,2.3.2二元运算符,二元运算符就是需要两个操作数参与的运算符,我们很熟悉的加减乘除四则运算的符号“+”、“-”、“*”、“/”就是二元运算符。如“3+8”,“+”运算符的两个操作数分别是3和8。比较运算符(结果是逻辑性型,即True或False)比较一个数是否大于另一个数逻辑运算符(结果是逻辑型)输出结果为8。n=38?3:8;输出结果为3。,2.3.4运算符优先级,表达式有多个运算符时,表达式的求值顺序由运算符的优先级决定:先取优先级较高的运算符进行计算,将运算的结果再运用于优先级较低的运算符。也遵从算术运算的“先乘除后加减”这样的规则,可以用圆括号“()”改变运算的优先次序。C#运算的优先级如下,越上面优先级越高,如果一个表达式中出现同一个优先级的运算符,运算顺序取决于其结合性。结合性指运算符在表达式中从左到右或从右到左的运算顺序。,第2章C#程序开发基础C#语法入门,数据类型常量和变量运算符和表达式类型转换数组和枚举,2.4类型转换,在输出结果时经常把整型、浮点型等类型转换为字符串,不同类型的数据进行运算时需要转换为同一类型才能正常计算,所有操作过程中经常涉及到数据类型之间的转换。C中数据类型的转换可以分为两类:隐式转换和显式转换。,2.4.1隐式转换,隐式转换,就是系统默认的、不需要加以声明就可以进行的转换。例如:shortst=250;inti=st;/将短整型隐式转换成整型在C#没有引入var类型的变量之前,隐式转换仅存在于数值类型的数据之间,引入var类型之后,var定义的变量可以实现隐式数据转换。,1数值类型数据间的隐式转换,隐式数据类型转换适用于数值类型的数据之间,如整型数据(int)可以隐式转换为浮点型(float)和双精度型(double)数据;浮点型(float)可以隐式转换为双精度型(double)数据。隐式数据类型转换遵循以下规则才能实现。,2var类型数据隐式转换,var定义的变量的数据类型是由赋值的数据决定的。如varName=”Johnson”,此时变量Name就是字符串类型,进行了隐式转换。1varintNum=250;2inti=intNum;/var型变量intNum隐式转换成整型;3varName=”Johnson”;4stringstrName=Name;/var型变量Name隐式转换string型;,2.4.2显式转换显式,转换又叫强制类型转换,需要用户明确地指定转换的类型。通过显式数据转换,可以把取值范围大的数据转换为取值范围小的数据。显式转换可以发生在表达式的计算过程中,可能引起信息丢失,例如下面代码把float类型的变量pi强制转为int,小数部分的信息就丢失了。floatpi=3.14f;/定义一个单精度的实数inti=(int)pi;/将单精度强制转换为整型行计算,i的值是3,不是3.14,造成信息丢失,2.4.3使用Convert类转换,.NetFramework提供了很多类库,其中System.Convert类就是专门进行类型转换的类,通过Convert类提供的方法实现各种基本数据类型间的转换。Convert类的常用方法有:方法说明ToBoolean将指定的值转换为等效的布尔值。ToChar将指定的值转换为Unicode字符。ToDateTime将指定的值转换为DateTime。ToDecimal将指定值转换为Decimal数字。ToDouble将指定的值转换为双精度浮点数。ToInt16将指定的值转换为16位有符号整数。ToInt32将指定的值转换为32位有符号整数。ToString将指定值转换为其等效的String表示形式。例如:StringMyString=”true”;BoolMyBool=Convert.ToBoolean(MyString);/将String转换为Boolean型,MyBool=trueStringnewString=”123456789”;IntMyInt=Convert.ToInt32(newString);/将字符串转换为数字值,MyInt=123456789.,【范例2-5】隐式转换、显式转换使用举例,在VisualStudio2008中新建C#控制台程序,项目名为TypeConvert;在Program.cs的Main方法中输入以下代码。完整的代码如下:1Console.WriteLine(“隐式、显式转换例子:”);2shortr=25;/r表示圆的半径;3inti=r;/将短整型r隐式转换成整型4floatpi=3.14f;/定义一个单精度的实数5doubles1=pi*i*i;/s1为double型,表示圆的面积6ints2;7s2=(int)pi*i*i;/s2为int型,表示圆的面积8varName=“Johnson”;9stringstrName=Name;/var型变量rName隐式转换string型10Console.WriteLine(“r=25,圆的面积=0,1”,s1,s2);11Console.WriteLine(“转换成功!”);第3行,将short类型隐式转为int;5行int和float类型隐式转为double类型;7行显式把float转为int;89行,var类型隐式转为string类型。代码详解,2.4.4装箱和拆箱,拆箱是把“引用”类型转换成“值”类型,装箱是把“值”类型转换成“引用类型”,是数据类型转换的一种特殊应用。有时某些方法的参数要求使用“引用”类型,而想把“值”类型的变量通过这个参数传入,就需要使用这个操作例如。1intn=4;/n是值类型2objectobj=n;/封箱,把任何值类型隐式地转化为object类型,其中object为引用类型3Console.WriteLine(“n的初始值为:0,装箱后的值为1”,n,obj.ToString();4intm=(int)obj;/拆箱,把一个object类型隐式地转换为值类型;5Console.WriteLine(“引用类型的值为:0,拆箱后的值为1”,obj.ToString(),m),2.4.5数值和字符串之间的转,C#中字符串和数值之间经常互相转换,下面介绍一下二者之间的转换方法。(1)ToString()方法:数值类型的ToString()方法可以将数值型数据转换为字符串;(2)Parse()方法:数值类型的Parse()方法可将字符串转换为数值型,如字符串转换为整型使用int.Parse(string);字符串转换为双精度浮点型使用double.Parse(string)等。,例如:1intnum1=25;2stringstr1=num1.ToString();/num1的ToString()方法将num1转为string赋给str13stringstr2=38;4intnum2=int.Parse(str2);/int.Parse()方法将字符串str2转换为int类型5stringstr3=21;6doublenum3=double.Parse(str3);/double.Parse()将字符串转换为双精度浮点型7stringstr4=56;8floatnum4=float.Parse(str4);/float.Parse()将字符串转换为单精度浮点型,第2章C#程序开发基础C#语法入门,数据类型常量和变量运算符和表达式类型转换数组和枚举,2.5数组和枚举,简单数据类型如整型、字符串类型等变量都只能存储一个值,如需要存储多个相同类型的数据,可以使用数组。使用枚举,可以避免不合理的赋值,使程序更加合理和安全。本节讲解数组和枚举的使用。,2.5.1数组的定义和使用,数组是一个经过索引的对象集合。一维对象数组的声明如下:数据类型数组的大小或容量数组名;其中中的数组的大小或容量可以省略。如下所示:int5array1/声明有五个数组元素的数组;或intarray1array1=newint5;/和上面数组声明等价;,声明过的数值型数组中的数组元素默认值为零,引用类型数值中的数组元素的默认值为null,可以在创建数组的同时初始化数组,如下所示:intarray1=newint1,3,5,7,9;/有5个元素的数组,初值分别为1,3,5,7,9或intarray1=newint51,3,5,7,9;/数组的大小和数组元素的个数必须相等或intarray1=1,3,5,7,9;,二维数组,声明二维数组的语法是:数据类型,数组名;例如:1int,array2D=newint2,3;/声明二维数组array2D2int,array2D2=1,2,3,4,5,6;/声明二维数组array2D2的同时初始化3,2.5.2Array类,System.Array类提供了创建、操作、搜索和排序数组的许多静态方法供程序调用,它是所有数组类型的抽象基类,不能直接从System.Array显示地派生自己的数组类型。Array类常用的方法如下:方法名功能Clear清除将Array中的元素值Copy将一个Array的一部分元素复制到另一个Array中CopyTo将当前一维Array的所有元素复制到指定的一维Array中。Find搜索与指定谓词定义的条件匹配的元素,返回整个Array中的第一个匹配项。FindAll检索与指定谓词定义的条件匹配的所有元素。FindIndex搜索与指定谓词定义的条件匹配的元素,返回Array或其某个部分中第一个匹配项的从零开始的索引。GetLength获取Array的指定维中的元素数。GetValue获取当前Array中指定元素的值。IndexOf返回一维Array或部分Array中某个值第一个匹配项的索引。Initialize通过调用值类型的默认构造函数,初始化值类型Array的每一个元素。Reverse反转一维Array或部分Array中元素的顺序。SetValue将当前Array中的指定元素设置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论