《Csharp语言基础》word版_第1页
《Csharp语言基础》word版_第2页
《Csharp语言基础》word版_第3页
《Csharp语言基础》word版_第4页
《Csharp语言基础》word版_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、.第2章 C# 语言基础本章将首先介绍C# 的基本数据类型、关键字和标识符、常量与变量、运算符和表达式,以及C# 编码规范等基础知识。然后介绍C#程序控制结构的概念以及选择结构与循环结构的实现,最后介绍C# 中的数组、方法、类与对象以及文件操作。2.1 数 据 类 型数据类型是对各种数据形态的描述,如整型、浮点型等。在计算机中,数据类型的不同决定所占内存存储空间的大小,使用什么样的数据类型要根据实际情况而定。C# 提供了大量的内置数据类型,被称为基本数据类型,与之对应的是用户自定义的复合数据类型,本节只介绍基本数据类型。C# 语言与.NET框架的结合是无缝的,因此,提供给C# 开发者的基本数据

2、类型也是.NET框架的一部分。表2-1列举了C# 语言中的基本数据类型,以及与它们对应的.NET框架的数据类型、大小和说明。表2-1 C# 的基本数据类型C# 数据类型.NET框架数据类型大小(位)说 明boolSystem.Boolean8逻辑值,true或者false,默认值为falsebyteSystem.Byte8无符号的字节,所存储的值的范围是0255,默认值为0sbyteSystem.SByte8带符号的字节,所存储的值的范围是-128127,默认值为0charSystem.Char16无符号的16位Unicode字符,默认值为'0'decimalSystem.De

3、cimal128不遵守四舍五入规则的十进制数,默认值为0.0mdoubleSystem.Double64双精度的浮点类型,默认值为0.0dfloatSystem.Single32单精度的浮点类型,默认值为0.0fintSystem.Int3232带符号的32位整型,默认值为0uintSystem.UInt3232无符号的32位整型,默认值为0longSystem.Int6464带符号的64位整型,默认值为0ulongSystem.UInt6464无符号的64位整型,默认值为0续表C# 数据类型.NET框架数据类型大小(位)说 明shortSystem.Int1616带符号的16位整型,默认值为

4、0ushortSystem.UInt1616无符号的16位整型,默认值为0stringSystem.String取决于实现平台指向字符串对象的引用,0大约20亿个Unicode字符,默认值为nullobjectSystem.Object32指向类实例的引用,默认值为null2.2 标识符与命名空间标识符是计算机语言里常用的一个术语,而命名空间是微软在.NET中提出的一个新概念。本节将介绍这些概念。2.2.1 关键字与标识符在Visual C# 2008中,关键字是对编译器具有特殊意义的预定义保留符号。如if、int、do等都是Visual C# 2008的关键字,它们不能在程序中用作标识符,除

5、非它们有一个“”前缀(只有在特殊的情况下使用,否则并不提倡这么做)。例如,“if”是一个合法的标识符,而“if”不是合法的标识符,因为它是关键字。在Visual C# 2008中,常量、变量、函数、类等的命名必须遵循一定的规则,通常把符合这些规则的名称称为Visual C# 2008的合法标识符,这些规则如下。(1)标识符必须由字母、十进制数字、下划线(_)或汉字组成,且只能以字母、下划线或汉字开头。(2)如果以下划线开头,则必须包括至少一个其他字符。(3)不能是Visual C# 2008中的关键字(保留字)。(4)Visual C# 2008的标识符区分大小写。下面列出了一些合法与不合法的

6、标识符:abc、_12、加数、if_else / 合法的标识符 12abc / 错误,不能以数字开头_ / 错误,以下划线开头,应至少包括一个其他字符Ab#3 / 错误,包含非法字符#false/ 错误,“false”是Visual C# 2008中的关键字注意: Visual C# 2008标识符区分大小写,如:“AbC”与“ABc”是不同的标识符,在编写代码时要注意。 虽然在Visual C# 2008中,标识符中允许使用中文(汉字),但是并不提倡这么做。2.2.2 命名空间在编写大型程序时,随着代码的增多,就意味着越来越多的名称、命名数据、已命名过程以及已命名类等,这就极有可能发生两个或

7、者两个以上的标识符名称冲突,造成项目的失败。为了解决类似的问题,需要引入“命名空间”的概念。微软在.NET中,引入了命名空间(namespace),命名空间就是用来解决上述问题的,它为各种标识符创建一个已命名的容器,同名的两个标识符如果不出现在同一个命名空间中,是不会相互冲突的。例如,求平方根的数学函数Sqrt()位于命名空间“System.Math”中,在使用Sqrt()函数时,需要输入完整的命名空间和函数名称“System.Math.Sqrt()”,增加输入的难度。Visual C# 2008允许在代码编辑器的顶部引入命名空间,这样就可以在下面的代码中直接使用Sqrt()函数。引入“Sys

8、tem.Math”命名空间的代码如下:/*using System.Math/*2.3 常量与变量计算机处理的数据分为常量和变量两种,本节将介绍常量与变量的概念以及它们的声明和使用方法。2.3.1 常量常量是指在程序运行的过程中,其值保持不变的量。Visual C# 2008的常量包括符号常量、数值常量、字符常量、字符串常量和布尔常量等。符号常量一经声明就不能在任何时候改变其值。Visual C# 2008中,采用const语句来声明常量,其语法格式为:const <数据类型> <常量名> = <表达式> 对以上语法格式说明如下: <常量名>遵循

9、标识符的命名规则,一般采用大写字母。表达式由数值、字符、字符串常量及运算符组成,也可以包括前面定义过的常量,但是不能使用函数调用。例如:/*const int MIN = 100;/ 声明常量MAX, 代表1000, 整型const float PI = 3.14F; / 声明常量PI, 代表3.14, 单精度型const string STR = "2009010101" / 声明常量STR, 代表"2009010101", 字符串型/* 如果多个常量的数据类型是相同的,可在同一行中声明这些常量,声明时用逗号将它们隔开。如:/*const int NU

10、M1 = 10, NUM2 = 100, NUM3 = 1000;/*2.3.2 变量变量是在程序运行的过程中,其值可以改变的量,它表示数据在内存中的存储位置,每个变量都有一个数据类型,以确定哪些数据类型的数据能够存储在该变量中。C# 是一种数据类型安全的语言,编译器总是保证存储在变量中的数据具有合适的数据类型。在Visual C# 2008中,声明变量的语法格式为:<数据类型> <变量名> = <表达式> 对以上语法格式说明如下: <变量名>遵循C# 合法标识符的命名规则。 = <表达式>为可选项,可以在声明变量时给变量赋一个初值(

11、即变量的初始化),例如:/*float x = 12.3; / 声明单精度型变量X, 并赋初值12.3/*等价于:/*float x;x = 12.3;/* 一行可以声明多个相同类型的变量,且只需指定一次数据类型,变量与变量之间用逗号隔开,例如:/*int num1 = 10, num2 = 100, num3 = 1000, num4 = 10000;/*2.4 运算符与表达式运算符是对一个或者多个返回值的代码元素执行运算的代码单元,Visual C# 2008的运算符包括算术运算符、逻辑运算符、字符串连接运算符、关系运算符、赋值运算符、位运算符和自增自减运算符等,本节将详细介绍这些运算符和

12、表达式,以及它们的优先级。2.4.1 算术运算符算术运算符用于完成算术运算,所涉及的操作对象有文本、常量、变量、表达式、函数调用以及属性调用等。例如,运算符“*”用于将其两边的操作数的值相乘。Visual C# 2008的算术运算符及相应的表达式示例如表2-2所示。表2-2 算术运算符运 算运 算 符算术表达式示例结果及说明取负-1对数字1进行取负运算加法+1+21加上2,结果为3减法-1-21减去2,结果为-1乘法*1×21乘以2,结果为2除法/10/210除以2,结果为5求余%10%4取10除以4的余数,结果为2对算术运算符说明如下:“%”为求余运算符,求两个数相除后的余数。 进

13、行除法运算时,如果两个操作数均为整数,则得到的结果也是整数,并不采用四舍五入规则,而是直接舍弃其小数部分,例如,“10 / 4”的结果为“2”、“15 / 4”的结果为“3”。 数学运算符中,只有取负(-)为一元(只有一个操作数)运算符,其他均为二元(有两个操作数)运算符。 算术运算符的优先级顺序由高到低依次为:-(取负)、*、/、%、+、-(减)。2.4.2 字符串连接运算符Visual C# 2008的字符串连接运算符只有一个,即“+”,它一般用于连接两个字符串。字符串连接表达式的结果仍为字符串类型的数据,例如:"Visual" + " C# " +

14、 "2008"/ 结果为"Visual C# 2008"对字符串连接运算符说明如下:当“+”连接的对象中既有字符串又有数字时,则可以省略数字的字符串定界符(""),例如,"Visual" + " C# " + "2008"可以写成"Visual" + " C# " + 2008这样做并不会影响计算的结果,但是并不提倡这样做。2.4.3 关系运算符关系运算符用于比较两个表达式之间的关系,比较的对象通常有数值、字符串和对象等,关系运算的结果

15、是一个bool值,即true或false。Visual C# 2008的关系运算符及相应的表达式示例如表2-3所示。表2-3 关系运算符运 算 符测试关系关系表达式示例结果(设变量a的值为10)=等于a = 8false!=不等于a != 8 true<小于a < 8false<=小于等于a <= 8false>大于a > 8true>=大于等于a >=8true对关系运算符及表2-3说明如下: 表2-3中给出的运算结果,是在假定变量a的值为10的前提下得到的。 所有的关系运算符均为二元运算符。关系表达式的运算结果是一个bool值,即true或f

16、alse。2.4.4 逻辑运算符逻辑运算符(也称布尔运算符)用于判断操作数之间的逻辑关系。逻辑表达式的值也是一个bool值,即true或false。Visual C# 2008的逻辑运算符有: &&(与)、|(或)、!(非)。其中,只有逻辑非(!)为一元运算符,其他均为二元运算符。逻辑运算符(&&、|、!)的运算规则如下。(1)逻辑非(!):由真变假或由假变真,进行取反运算。例如,!(2>10) 的值为true。(2)逻辑与(&&):对两个操作数进行与运算,如果两个操作数均为true,则结果为true;否则为false。例如,(2<1

17、0) && (8<5) 的值为false。(3)逻辑或(|):对两个操作数进行或运算,如果两个操作数其中有一个为true,则结果为true;只有当两个操作数均为false时,结果才为false。例如,(2<10) | (8<5) 的值为true。2.4.5 赋值运算符在Visual C# 2008中,赋值运算符有基本赋值运算符和复合赋值运算符两种,通常用于将表达式的值赋给一个变量。Visual C# 2008的赋值运算符(包括复合赋值运算符)及相应的表达式示例如表2-4所示。表2-4 赋值运算符运 算 符赋值表达式示例结果(设变量a的初始值为2)= a = 8

18、 把值8赋给变量aa = 8+=a += 8a = 10(相当于a = a + 8)-=a -= 8a = -6(相当于a = a - 8)*=a *= 8a = 16(相当于a = a * 8)/=a /= 2a = 1(相当于a = a / 2)%=a %= 2a = 0(相当于a = a % 2)2.4.6 位运算符计算机处理的数据都是以二进制的形式保存的,Visual C# 2008提供了一些专门针对二进制数的运算符,即位运算符。位运算符按二进制位进行运算,Visual C# 2008的位运算符如表2-5所示。表2-5 Visual C# 2008的位运算符位运算符含 义说 明&

19、;与两个二进制位同为1时结果为1,否则为0|或两个二进制位同为0时结果为0,否则为1异或两个二进制位相同时结果为0,否则为1取补按位取反,即 0 = 1, 1 = 0<<左移操作数按位左移,最高位移出,最低位补0>>右移操作数按位右移,最低位移出2.4.7 自增和自减运算符Visual C# 2008与C/C+相同,保留了自增运算符(+)和自减运算符(-),它们是一元运算符,且操作的对象只能是变量。1. 自增运算自增运算符(+)的作用是对变量的值加1。自增运算符(+)可以放在被操作变量的前面(称为前自增),也可以放在被操作变量的后面(称为后自增)。前自增与后自增有很大的

20、区别,如果带有自增运算符(+)的变量出现在表达式中,前自增的执行过程是:先使变量的值加1,再执行其他运算;而后自增则是先执行其他运算,再使变量的值加1。2. 自减运算自减运算符(-)的作用是对变量的值减1。自减运算符(-)可以放在被操作变量的前面(称为前自减),也可以放在被操作变量的后面(称为后自减)。前自减与后自减也有很大的区别,如果带有自减运算符(-)的变量出现在表达式中,前自减的执行过程是:先使变量的值减1,再执行其他运算;而后自减则是先执行其他运算,再使变量的值减1。2.4.8 其他运算符除了前面介绍的一些运算符,Visual C# 2008还提供了一些其他的运算符,如条件运算符、is

21、运算符和typeof运算符等。1. 条件运算符条件运算符“?:”也称为三元运算符,它是后面要介绍的选择结构控制语句ifelse的简化形式,具有3个操作数,其语法格式如下:<条件表达式> ? <条件成立的返回值> : <条件不成立的返回值>其中<条件表达式>的值是一个bool值,即true或false。若表达式的值为true,则返回<条件成立的返回值>;否则,返回<条件不成立的返回值>。虽然三元运算符看起来很简单,但它常常会导致程序难以理解,可读性差,因此在实际的编程中,并不提倡这么做。而应当尽量避免使用它,采用选择结构控制

22、语句ifelse来解决类似的问题。2. is运算符is运算符用来比较两个对象的引用变量,其语法格式如下: result = <表达式> is <类型>result是一个bool值,如果<表达式>的数据类型和<类型>相同或者相容,则result的值为true;否则,result的值为false。3. typeof运算符typeof运算表达式返回一个表示特定类型的System.Type对象。例如,typeof(int) 返回表示S32类型的Type对象,typeof(string) 返回表示System.String类型的Type对

23、象。该运算符在使用反射动态查找对象信息时很有用。4. sizeof运算符sizeof是C# 语言的一种一元运算符,它并不是函数。sizeof运算符以字节形式给出了其操作数的存储大小。操作数可以是一个类型名,操作数的存储大小由操作数的数据类型决定。2.4.9 运算符的优先级和结合顺序前面介绍了C# 的一些常用的运算符,本小节将介绍这些运算符的优先级顺序及其结合性。下面先来看一下运算符的优先级。1. 运算符的优先级根据运算符所执行运算的特点和它们的优先级,可将它们归为一元运算符和括号、算术运算符、移位运算符、比较运算符、位运算及逻辑运算符、赋值运算符、后自增和后自减运算符7个等级。这些运算符的优先

24、级顺序根据这7个等级进行划分,如表2-6所示(从第一级到第七级,优先级逐步降低)。表2-6 运算符的优先级级 别运 算 符第一级+、-(作为前缀)、()、+、- (取负)、!、第二级*、/、%、+、-第三级<<、>>第四级<、>、<=、>=、=、!=第五级&、|、&&、|、?:第六级=、*=、/=、%=、+=、-=、<<=、>>=、&=、=、|=第七级+、-(作为后缀)2. 运算符的结合顺序运算符的结合顺序分为左结合和右结合两种,在Visual C# 2008中,所有的一元运算符(+、-作为

25、后缀时除外)都是右结合的。而对于二元运算符,除了赋值运算符外,其他的都是左结合的。2.5 命 名 规 则编写代码时,使用良好的风格对标识符命名是一个优秀的程序员必须养成的习惯。变量、函数、结构、枚举、类、属性、事件、方法等的命名都遵循这些规则,这样可以大大地提高程序的可读性,并可方便开发团队中各人员之间的合作。1. 标识符的书写风格标识符的书写通常有以下几种风格。1)Pascal风格大写每一个单词的第一个字符,如WindowsApplication1、MaxNum。2)Camel风格除了第一个单词,大写其他单词的第一个字符,如maxNum、userName。3)全部大写如果标识符包含的字符数较

26、少,可以采用全部大写的方法,一般用于常量的命名,如PI、MAX、MIN。2. 类、结构、枚举和命名空间的命名类(class)、结构(struct)、枚举(enum)和命名空间(namespace)的命名一般采用Pascal风格,由名词或名词短语构成,且不要使用任何前缀。例如,Form1、StudentInformation、WeekDays、TxtWelcome等。3. 参数、变量的命名参数、变量的命名采用Camel风格,使用描述性的名字,使它能够充分地表示出参数或变量的含义。例如,maxNumber、userName等。如果变量仅用来在循环中计数,即作为循环变量,则优先使用i、j、k、l、m

27、、n等。4. 方法、事件的命名方法的命名采用Pascal风格,使用动词或动词短语命名。例如,AddValues、Button1- Click、Click、DoubleClick、FormClosing等。5. 属性的命名属性的命名采用Pascal风格,使用名词或名词短语命名。例如,BackColor、ReadOnly、ControlBox等。6. 控件的命名控件的命名采用Camel风格(Form除外),即首字母小写,而每个后面连接的单词的首字母都大写,命名的形式为:控件名的简写+英文描述(英文描述首字母大写)。例如,btnOk、lblShow、txtInputNum等。Visual C# 20

28、08常用控件的简写及应用举例如表2-7所示。表2-7 常用控件的简写及应用举例常用控件简 写应用举例FormFrmFrmMain(一个Form对应一个类)LabellbllblShowLinkLabelllblllblEmailButtonbtnbtnOkTextBoxtxttxtInputNumRichTextBoxrtxtrtxtShowDataMainMenummnummnuFileCheckBoxchkchkStockRadioButtonrbtnrbtnSelectedGroupBoxgbxgbxMainPictureBoxpicpicLogoPanelpnlpnlBodyListB

29、oxlstlstUserComboBoxcmbcmbMenuListViewlvwlvwBrowserTreeViewtvwtvwTypeTabControltctltctlMainDateTimePickerdtpdtpFinishDateHscrollBarhsbhsbColorVscrollBarvsbvsbColorTimertmrtmrLoginToolBartlbtlbMainStatusBarstbstbFootPrintOpenFileDialogodlgodlgFileSaveFileDialogsdlgsdlgSaveFoldBrowserDialogfbdlgfgdlgB

30、rowserFontDialogfdlgfdlgFootColorDialogcdlgcdlgColorPrintDialogpdlgpdlgPrint2.6 控 制 结 构结构化程序设计有3种基本控制结构:顺序结构、选择结构和循环结构。本节将介绍这3种控制结构的概念及相应的控制语句。2.6.1 顺序结构顺序结构是一种线性结构,也是程序设计中最简单、最常用的基本结构,它只是一种编写和执行程序的协议,并不需要专门的控制语句来支持。从宏观上来看,任何程序或系统都可以看成是由一个个基本结构或基本程序段构成的顺序结构。2.6.2 选择结构在日常的事件处理中常常需要根据不同的情况,采用不同的措施来解决问

31、题。同样,在程序设计中,也要根据不同的给定条件而采用不同的处理方法,选择结构就是用来解决这一类问题的。选择结构也称为分支结构,其特点是:根据给定的条件是否成立,决定从各个可能的分支中执行某一分支的相应操作。Visual C# 2008提供了两种用于选择结构的控制语句,分别是if语句和switch语句,下面首先介绍一下if语句。1. if语句if语句是用于实现单条件(即只有一个条件)选择结构的语句,其特点是:当给定条件(条件表达式)为真时,执行条件为真的语句组(以下称为“语句组 1”);如果为假,则执行条件为假的语句组(以下称为“语句组2”)。对if语句说明如下: 语句组1、语句组2可

32、以为空(空则表示不做任何处理),然而当两个语句组都为空的话就失去了选择的意义。 为养成良好的源代码书写习惯,如果必须设立空分支,应该将空分支作为条件为假的分支(即语句组1非空)。根据上面的说明可以看出,单条件的if语句应当有两种形式:一个分支的if语句和两个分支的if语句(if . else语句)。1)一个分支的if语句只具有一个分支的if语句的语法格式如下:if (<条件表达式>) <语句组>对以上语法格式说明如下: <条件表达式>可以是关系表达式或逻辑表达式,表示执行的条件,运算结果是一个bool值(true或false)。 <语句组>可以是

33、一条语句,也可以是多条语句。当只有一条语句时,花括号()可以省略,但并不提倡这么做。一个分支的if语句使用示例如下:/*if (n % 2 = 0) MessageBox.Show(n.ToString() + "是偶数");/*2)两个分支的if语句具有两个分支的if . else语句的语法格式如下:if (<条件表达式>) <语句组1>else <语句组2>对以上语法格式说明如下: 同样<条件表达式>可以是关系表达式或逻辑表达式,表示执行的条件。 当<条件表达式>的值为true(成立)时,执行<语句组&#

34、160;1>。反之,当<条件表达式>的值为false(不成立)时,执行<语句组2>。两个分支的if语句使用示例如下:/*if (n % 2 = 0) MessageBox.Show(n.ToString() + "是偶数");else MessageBox.Show(n.ToString() + "是奇数");/*3)if语句的嵌套if语句的嵌套是指 <语句组1> 或 <语句组2> 中又包含if语句的情况,其形式为:if (<条件表达式1>) if (<条件表达式2>) els

35、e 嵌套的if语句的执行过程与前面介绍的类似,嵌套的层数一般没有具体的规定,但是一般来说超过10层的嵌套就很少见了。4)嵌套格式else if如果程序中出现了多层的if语句嵌套,会使得程序结构很不清晰,从而使代码的可读性很差。在这种情况下,应该使用if语句的嵌套格式else if来编写代码,这样可以使程序简明易懂。if语句的嵌套格式else if语法格式如下: if (<条件表达式1>) <语句组1> else if (<条件表达式2>) <语句组2> else if (<条件表达式n>) <语句组n>else <语

36、句组n+1>对以上语法格式说明如下: else子句与else if子句都是可选项,可以放置多个else if子句,但必须放置在else子句之前。 执行过程:先测试<条件表达式1>,如成立,执行<语句组1>;否则依次测试else if的条件,若成立则执行相应的语句组;如果都不成立,则执行else子句的<语句组n+1>。嵌套格式else if语句使用示例如下:/*if (n % 2 = 0) MessageBox.Show(n.ToString() + "是偶数");else if (n % 2 = 1) MessageBox.Show

37、(n.ToString() + "是奇数");else MessageBox.Show(n.ToString() + "既不是偶数, 也不是奇数");/*2. switch语句使用if语句的嵌套可以实现多分支选择,但仍然不够快捷。为此,Visual C# 2008提供了多分支选择语句switch来实现,其语法格式如下:switch (<表达式>)case <常量表达式1>:<语句组1>break;case <常量表达式2>:<语句组2>break;case <常量表达式n>:<

38、语句组n>break;default:<语句组n + 1>break;对以上语法格式说明如下: <表达式>为必选参数,一般为变量。 <常量表达式>是用于与<表达式>匹配的参数,只可以是常量表达式,不允许使用变量或者有变量参与的表达式。 <语句组>不需要使用花括号()括起来,而是使用break语句来表示每个case子句的结尾。 default子句为可选项。多分支switch语句的执行过程如下。(1)首先计算<表达式>的值。(2)用<表达式>的值与case后面的<常量表达式>去逐个匹配,若发现相等

39、,则执行相应的语句组。(3)如果<表达式>的值与任何一个<常量表达式>都不匹配,在有default子句的情况下,则执行default后面的<语句组n + 1>;若没有default子句,则跳出switch语句,执行switch语句后面的语句。注意:在使用switch语句时,每一个case子句必须要有break语句结尾,否则会发生编译错误。但如果该case子句的<语句组>为空,则不需要使用break语句,但这种情况是比较少见的。switch语句使用示例如下:/*switch (n % 2) case 0: MessageBox.Show(n.ToS

40、tring() + "是偶数"); break; case 1: MessageBox.Show(n.ToString() + "是奇数"); break; default: MessageBox.Show(n.ToString() + "既不是偶数, 也不是奇数"); break;/*2.6.3 循环结构循环是指在程序中,从某处开始有规律地重复执行某一操作块的现象,被重复执行的操作块称为循环体,循环体执行与否及循环次数视循环类型与条件而定。然而,无论何种类型的循环都有一个共同点:循环次数必须有限(即非死循环)。Visual C# 2

41、008中的循环控制语句有for语句、while语句和dowhile语句。1. for语句在一般的程序设计语言中,for语句用于确定循环次数的循环结构,但在C、C+和C# 中,for语句是最灵活的一种循环语句。它不仅能用于确定循环次数的循环,也可以用于不确定循环次数的循环。通常情况下,for语句按照指定的次数执行循环体,循环执行的次数由一个变量来控制,通常把这种变量称为循环变量。for语句的语法格式为:for (<表达式1> <表达式2> <表达式3>) <循环体>对以上语法格式说明如下: <表达式1>、<表达式2>、<

42、;表达式3>均为可选项,但其中的分号(;)不能省略。 <表达式1>仅在进入循环之前执行一次,通常用于循环变量的初始化,如“i = 0”,其中i为循环变量。 <表达式2>为循环控制表达式,当该表达式的值为true时,执行循环体,为false时跳出循环。通常是循环变量的一个关系表达式,如“i <= 10”。 <表达式3>通常用于修改循环变量的值,如“i +”。 <循环体>即重复执行的操作块。for语句的使用示例如下:/*int i; int sum = 0; for (i = 0; i <= 10; i +) sum += i;/*

43、2. while语句与for语句一样,while语句也是C# 的一种基本的循环语句,它常常用来解决根据条件执行循环而不关心循环次数的问题。while语句的语法格式为:while (<表达式>) <循环体>对以上语法格式说明如下: <表达式>为循环条件,一般为关系表达式或逻辑表达式。如:i <= 10、n % 3 = 0 && n % 7 = 0(表示n既能被3整除又能被7整除)。 <循环体>即反复执行的操作块。将上面介绍的for语句使用示例改写成while语句:/*int i = 0; int sum = 0; while

44、(i <= 10) sum += i; i +; /*3. dowhile语句dowhile语句类似于while语句,是while语句的变形,两者的区别在于while语句把循环条件的判断置于循环体执行之前,而dowhile语句则把循环条件放在循环体执行之后。do.while语句的语法格式为:do <循环体> while (<表达式>);对以上语法格式说明如下: <循环体>即反复执行的操作块。 <表达式>为循环条件,一般为关系表达式或逻辑表达式。在“while (<表达式>)”之后,应加上一个分号(;),否则将发生编译错误。将上面

45、介绍的for语句使用示例改写成do.while语句如下:/*int i = 0; int sum = 0; do sum += i; i +; while (i <= 10); /*2.6.4 跳转语句跳转语句用于使程序语句的执行实现跳转,从而控制程序的执行。在Visual C# 2008中,有goto语句、break语句和continue语句等跳转语句。1. goto语句goto语句一般与标签搭配使用,将程序的执行跳转到标签所指定的代码行,其语法格式为: goto <标签标识符> <标签标识符>: 对以上语法格式说明如下: <标签标识符>的命名遵循C

46、# 的合法标识符规则。 标签由<标签标识符>和后面的冒号(:)构成。 标签可以在“goto”之前,也可以在“goto”之后。“goto”和标签必须同时出现在程序的有效区之内,否则会产生编译错误。 goto语句容易引起程序流程的混乱,降低程序的易读性,因此在实际的编程过程中,要尽量避免使用goto语句。2. break语句break语句可以用于终止最近封闭的循环(包括for语句、while语句、do.while语句以及用于数组和集合的foreach语句),也可以出现在switch语句中,将控制传递给终止语句后面的语句。3. continue语句continue语句将控制权传递给它所在

47、的循环语句(包括for语句、while语句、do.while语句、foreach语句)的下一次循环。即continue语句用于中止正在执行的循环,转而执行下一轮循环。4. return语句return语句终止它出现在其中的方法的执行并将控制返回给调用方法,具有跳转的功能。它还可以返回一个可选值。一般用于方法中返回指定类型的值。如果方法为void类型(空类型),则可以省略return语句。5. throw语句throw语句用于发出在程序执行期间出现异常的信号,通常throw语句与结构化异常处理语句try.catch或try.finally一起使用,当引发异常时,程序查找处理此异常的catch语句

48、,也可以用throw语句重新引发已捕获的异常。2.7 数 组在Visual C# 2008中,数组实际上是对象,这是C# 的数组与其他程序设计语言的数组的最大差别。另外,在声明及使用的方式等方面都有所不同,下面首先来看一下有关数组的几个概念,然后再介绍C# 数组与其他程序设计语言的数组的差异。2.7.1 几个相关的概念数组是各种高级语言中所广泛采用的,在讲解数组的声明与应用之前,首先来介绍一下有关数组的几个重要概念。1. 数组将一组有序的、个数有限的、数据类型相同的数据组合起来作为一个整体,用一个统一的名字(数组名)来表示,这些有序数据的全体则称为一个数组。简单地说,数组是具有相同数据类型的元

49、素的有序集合。例如,下面的两组数可以构成数组。1,2,3,4,5,6,7,8,9,10"A","B","C","D","E","F","G"2. 数组元素与下标在同一数组中,构成该数组的数据称为数组元素。如在上面列举的几组数据中:2是第一个数组的元素,"B"是第二个数组的元素。Visual C# 2008中用一个统一的名字(数组名)来表示数组。如果要访问数组中的数组元素,就需要将数组名与下标(也称为索引)结合起来(具体的访问方法稍后介绍

50、)。所谓“下标”,就是指数组元素在该数组中的索引值,用以标明数组元素在数组中的位置。在Visual C# 2008中,数组元素的索引值是从0开始的,即:0,1,2,3,4,5,6,。3. 数组的类型数组的类型是指构成数组的元素的数据类型(构成同一数组的所有数组元素的数据类型必须一致),它可以是任何的基本数据类型,例如,整型、字符串型、布尔型等;也可以是用户自定义类型,例如,结构、枚举、对象等。4. 数组的维数数组下标(索引)的个数称为数组的维数。如果数组中的所有元素,都能按行(或列)顺序排成一行(或一列),则只需要用一个下标便能标识其所在的位置,这样的数组称为一维数组。一维数组以线性方式存储一定数目的元素,如上面提到的两组数。

温馨提示

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

评论

0/150

提交评论