




已阅读5页,还剩92页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章C#语言基础,第2章C#语言基础,2.2C#语言的基本数据类型,2,2.3C#语言的运算符和表达式,3,2.4C#语言的控制语句,4,3,3,3,2.6疑难问题解析,6,2,本章学习目标,理解C#语言基本数据类型理解C#运算符掌握流程控制语句理解C#语言基本数据类型,3,2.1常量与变量,2.1.1变量,1.标识符命名规则和命名方法为标识变量、常量、函数、方法、结构、类、接口等元素的有效字符称为标识符(Identifier)。标识符的命名必须遵守下列规则:(1)标识符由字母、数字、下划线组成,首字符不能为数字。(2)标识符不能与C#中的关键字相同,也不能与C#中的类库名相同。关键字是对编译器具有特殊意义的预定义保留标识符,C#中使用的关键字如表2-1所示。(3)关键字加前缀,可以成为合法标识符。(4)标识符区分大小写。,4,2.1常量与变量,2.1.1变量,表2-1C#中的关键字,5,2.1常量与变量,2.1.1变量,2.变量的定义在变量中存储值之前,必须先定义变量,指定它的类型。变量的定义格式为:属性修饰符数据类型变量名1,变量名2,变量名n;说明:(1)方括号“”内的内容是可选项,可以根据需要添加。(2)“属性”是对象的特定性质,后面部分再介绍。(3)“修饰符”指访问修饰符,也在后续章节介绍。(4)“数据类型”在本章第2节开始介绍。(5)可以同时定义多个同种类型的变量。,6,2.1常量与变量,2.1.1变量,3.初始化变量定义(声明)变量的数据类型相当于告诉编译器要为变量分配多少存储空间,变量可以在定义时就初始化,也可以在任何时候给变量赋新值。对变量声明并初始化的格式如下:数据类型变量名表达式;使用方法如下所示:inta=1;strings=Hello;XmlDocumenttempDocument=newXmlDocument();,7,2.1常量与变量,2.1.1变量,【示例】变量定义及初始化问题描述:直接定义变量并初始化,以及调用隐式构造函数初始化变量usingSystem;classProgramstaticvoidMain()inta=0;/定义变量时直接初始化intb=newint();/调用隐式构造函数Console.WriteLine(a=0,b=1,a,b);,8,2.1常量与变量,2.1.2常量,常量就是在程序执行时其值恒定不变的量,常量可以是任何一种数据类型。有时候在应用程序中需要操作一个固定的值,比如说圆周率,为了防止被重新赋值,可以把它定义在常量中。const语句用于定义常量,常量的定义格式为:const数据类型常量名=值;如:constdoublePI=3.14;一般说来,为了使常量容易被识别,命名时全部采用大写。常量必须在声明时就初始化,一经初始化,它的值就不能再改变了。,9,2.2C#语言的基本数据类型,数据类型决定了数据的性质、表示、存储空间和结构。C#的数据类型可以分为值类型和引用类型两个大类。值类型变量用来存储变量的实际值,引用类型则用来存储对实际数据的引用。,图2-1C#语言的数据类型,10,2.2C#语言的基本数据类型,2.2.1整数类型,C#中有8种整数类型。包括无符号字节型(byte)、字节型(sbyte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)和无符号长整型(ulong)。,表2-1整数类型,11,2.2C#语言的基本数据类型,2.2.2浮点类型,浮点类型就是带小数点的类型。在C#中有两种数据类型表示小数:单精度浮点型(float)和双精度浮点型(double)。注意:声明并初始化一个float变量时,使用后缀f(或F)表示它是一个单精度浮点型。如果省略了f,在变量被赋值之前,它将被编译器认作double型。,表2-2浮点类型,12,2.2C#语言的基本数据类型,2.2.3十进制类型,十进制类型(也叫小数型)的取值范围比double类型要小,但它是一种高精度的数据类型,适用于精度要求较高的金融和货币的计算。注意:声明并初始化一个decimal变量时,使用后缀m(或M)表示它是一个十进制类型:decimalval=3.0m;如果省略了f,在变量被赋值之前,它将被编译器认作double型。,表2-3十进制类型,13,2.2C#语言的基本数据类型,2.2.4字符类型,字符包括数字字符、英文字母和表达式符号等。字符类型为一个单Unicode字符,Unicode是一种重要的用于交互和显示的通用字符编码。字符常量是用单引号括起来的一个字符。C#允许使用转义字符,即以“”开头的字符序列。,表2-4字符类型,14,2.2C#语言的基本数据类型,2.2.4字符类型,表2-5转义符(EscapeSequences),15,2.2C#语言的基本数据类型,2.2.5布尔类型,布尔数据类型是一种逻辑数据类型,只有两个布尔值,true代表“真”,false代表“假”。,表2-6布尔类型,16,2.2C#语言的基本数据类型,2.2.6类型转换,C#的简单数据类型转换分为两类:隐式转换和显示转换。1.隐式转换隐式转换是编译器自动根据数据转换规则完成的,不需要作特别的说明。C#内部简单数据类型之间的转换遵循“由占存储空间小的低级类型向占存储空间大的高级类型转换,结果为高级类型”的原则。,17,2.2C#语言的基本数据类型,2.2.6类型转换,表2-7支持隐式转换的数据类型,18,2.2C#语言的基本数据类型,2.2.6类型转换,【示例】检查下面代码中的错误1.usingSystem2.classProgram3.4.staticvoidMain(stringargs)5.6.decimald=9.1;7.floatx=2.5;8.inty=3;9.Console.WriteLine(d+y);10.Console.WriteLine(x+d);11.12.,19,2.2C#语言的基本数据类型,2.2.6类型转换,2.显示转换显式类型转换又叫强制类型转换,即强制将一种类型转换为另一种类型。显式转换需要用户明确地指定转换的类型。C#语言强制转换类型的格式如下:(类型名)操作数,20,2.2C#语言的基本数据类型,2.2.6类型转换,2.显示转换在进行显式的类型转换时只能在数字类型、字符类型之间转换。注意:(1)显式转换包含了所有的隐式转换,即隐式转换也可以写成显式转换。(2)所有的显式数据类型转换都可能不安全,可能导致信息丢失或异常。在应用程序中应包含这样的代码,处理可能失败的数据类型转换。(3)不能直接把bool数据类型转换为其他类型,也不能把其他类型转换为bool数据类型。(4)当利用类型转换符“()”进行变量的强制转换时,相当于将变量的值复制一份进行的转换,变量自身的类型和数值都不会改变。,21,2.2C#语言的基本数据类型,2.2.6类型转换,3System.Convert类System.Convert类位于.NETFramework类库System.Text命名空间中,它提供了一套将一个基本数据类型转换为另一个基本数据类型的方法,通过这些方法还可以让一些完全不相关的数据类型都能进行转换。,22,2.2C#语言的基本数据类型,2.2.6类型转换,【示例】使用Convert类usingSystem;classProgramstaticdoublea=3.5;staticdecimalb;staticcharc=A;staticvoidMain(stringargs)strings;s=c.ToString();b=Convert.ToDecimal(a);Console.WriteLine(b=0ns=1,b,s);,23,2.2C#语言的基本数据类型,2.2.6类型转换,输入输出语句System.Console类为控制台程序的开发提供基本的输入输出方法,其中最常用的方法有:WriteLine、Write、ReadLine、Read。Console.ReadLine()方法用于从标准输入设备(键盘)接收一行字符(以回车表示输入结束),其返回值是字符串类型。如:strings=Console.ReadLine();inta=int.Parse(Console.ReadLine();或inta=Convert.ToInt32(Console.ReadLine();Console.Read()方法用于从标准输入设备(键盘)接收一个字符(以回车表示输入结束),其返回值是整型数据,即该字符的ASCII码。如:inta=Console.Read();,24,2.2C#语言的基本数据类型,2.2.6类型转换,Console.WriteLine()和Console.Write()方法均用于从标准输出设备(屏幕)输出,二者的区别在于WriteLine()输出后会自动换行。输出方法的基本格式是:Console.WriteLine(变量);/输出变量的值或Console.WriteLine(表达式);/输出表达式的值除此以外,.NET框架体系规定可以使用标准格式进行数据的格式化。标准格式为:N,M:Yn,变量1,变量2其中:N表示输出变量的序号。N为0对应输出的第1个变量,N为1则对应输出的第2个变量,依次类推。,M可选项。M表示输出的变量在控制台中所占据的字符个数,如果该数字为负数,则输出按照左对齐方式;如果该数字为正数,则输出按照右对齐的方式。:Yn可选项。其中Y是格式化字符串,它指的是数据的输出格式说明符。n为一个正整数。表示了数据的精度范围(有效数字范围),它用于控制当前数据在格式化后表现出来的有效数字个数。,25,2.2C#语言的基本数据类型,2.2.6类型转换,表2-13标准格式说明符,26,2.3C#语言的运算符和表达式,2.3.1C#的运算符,C#语言的运算符根据运算的类型运算符可分为下列几类。算术运算符。赋值运算符。关系运算符。逻辑运算符。位运算符。条件运算符。其他运算符。根据运算符使用的操作数的个数,可以分为。一元运算符(只有1个操作数)。二元运算符(有2个操作数)。三元运算符(有3个操作数)。,27,2.3C#语言的运算符和表达式,2.3.2运算符的优先级,表2-11C#运算符及优先级,28,2.3C#语言的运算符和表达式,2.3.3算术运算符与算术表达式,算术运算符包括加(+)、减()、乘(*)、除(/)、求模(%)、自增(+)、自减(-)、正(+)、负()九个运算符。1.+,*,/在进行数值运算时,遵循以下规则:(1)两个数值进行加减乘除运算时,结果与一般的数学运算一致,但两个整数相除结果为整数。(2)字符数据与数值进行运算,结果是字符的Unicode编码参与运算。(3)两个字符串相加,以及数值与字符串相加时,加号实际上是连接符。2.%求模运算符也叫取余运算符,用于求两个数相除的余数。,29,2.3C#语言的运算符和表达式,2.3.3算术运算符与算术表达式,3.+,-自增和自减运算符是一元运算符,它的作用是将操作数的值增加1或减少1。自增自减运算符有两种位置,把运算符放在表达式的前面称为前置,把运算符放在表达式的后面称为后置,它们的执行方式有所区别。(1)前置是先增加(减小)1,再计算表达式。(2)后置是先计算表达式,再增加(减小)1。,30,2.3C#语言的运算符和表达式,2.3.3算术运算符与算术表达式,【示例】自增自减运算符的使用usingSystem;classProgramstaticintx=5;staticvoidMain(stringargs)Console.WriteLine(x+)+2);/先输出x+2=7,然后x自增1,x=6Console.WriteLine(+x+2);/x先自增1,然后加2后再输出Console.WriteLine(x-)+2);/先输出x+2,然后x自减1Console.WriteLine(-x+2);/x先自减,然后加2后再输出,31,2.3C#语言的运算符和表达式,2.3.4赋值运算符与赋值表达式,1.简单赋值运算赋值运算符(=)用于对变量赋值,它是左结合运算符,含有赋值运算符的式子就是赋值表达式。2.复合赋值运算C#语言提供了复合赋值运算符以简化语句的代码。复合赋值运算符是由一个其他运算符加上简单赋值运算符而得到的,其含义为:将左边的操作数和右边的操作数按运算符进行运算,最后将结果赋给左边的变量。复合运算符包含以下几个:+=、-=、*=、/=、%=、=、/x=x*5,32,2.3C#语言的运算符和表达式,2.3.5关系运算符与关系表达式,关系运算符包括:小于()、小于或等于(=)、等于(=)、不等于(!=)。由关系运算符构成的表达式就是关系表达式,关系表达式的值是一个布尔值。,33,2.3C#语言的运算符和表达式,2.3.6逻辑运算符与逻辑表达式,逻辑运算符包含:逻辑与(classProgramstaticvoidMain(stringargs)boola=true,b=false;intx=1,y=2,z=3;if(a=xy),35,2.3C#语言的运算符和表达式,2.3.7位运算符与位表达式,位运算符主要将整数用二进制位的形式进行操作,位运算符包括:按位与(classProgramstaticvoidMain(stringargs)intx=30,y=21;Console.WriteLine(x,38,2.3C#语言的运算符和表达式,2.3.7位运算符与位表达式,5.左移()右移运算符就是将第一个操作数对应的二进制数的各位向右移动第二个操作数所指定的位数,低位右移后被舍弃,左边用0填充。,39,2.3C#语言的运算符和表达式,2.3.8条件运算符与条件表达式,条件运算符(?)是唯一的一个三目运算符,它需要3个操作数。条件表达式的一般格式为:表达式1?表达式2:表达式3运算过程为先计算表达式1的值,如果为真,整个条件表达式的值等于表达式2的值,否则等于表达式3的值。如:inta=3,b=5,max;max=(ab)?a:b/因为ab不成立,所以max的值为b的值。,40,2.3C#语言的运算符和表达式,2.3.9其他运算符,1.sizeof运算符sizeof运算符语句格式为:sizeof(变量类型)说明:sizeof(变量类型)结果返回该变量在内存中所占字节数。【示例】检索int和longint类型所占内存的大小usingSystem;classSizeTeststaticvoidMain(stringargs)Console.WriteLine(Thesizeofintis0.,sizeof(int);Console.WriteLine(Thesizeoflongis0.,sizeof(long);,41,2.3C#语言的运算符和表达式,2.3.9其他运算符,2.typeof运算符typeof运算符可以获得一个指定类型的System.Type对象,以字符串的形式返回表达式类型信息。其格式为:Type变量=typeof(类型);【示例】typeof运算符用法usingSystem;namespaceConsoleApplication1classTypeteststaticvoidMain(stringargs)Typetype=typeof(string);Console.WriteLine(type.FullName);,42,2.3C#语言的运算符和表达式,2.3.9其他运算符,3.is运算符is运算符用于检查表达式(必须是引用类型)是否是某种指定的类型,其使用格式为:表达式is类型如果表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则is表达式的计算结果将是true,否则返回值为false。,43,2.3C#语言的运算符和表达式,【示例】装箱拆箱usingSystem;classClass1classClass2classIsTeststaticvoidTest(objecto)/定义一个静态方法Class1a;Class2b;if(oisClass1)Console.WriteLine(oisClass1);a=(Class1)o;elseif(oisClass2)Console.WriteLine(oisClass2);b=(Class2)o;,44,2.3C#语言的运算符和表达式,elseConsole.WriteLine(oisneitherClass1norClass2.);staticvoidMain()Class1c1=newClass1();Class2c2=newClass2();Test(c1);Test(c2);Test(astring);,45,2.3C#语言的运算符和表达式,2.3.9其他运算符,4.as运算符as运算符用于在兼容的引用类型之间执行转换。其格式为:表达式1表达式2as类型as表达式首先测试表达式向某数据类型的转换是否合法,如果合法,就进行转换;不合法,返回为null。,46,2.3C#语言的运算符和表达式,【示例】使用as运算符usingSystem;classClass1classClass2classMainClassstaticvoidMain()objectobjArray=newobject6;objArray0=newClass1();objArray1=newClass2();objArray2=hello;objArray3=123;objArray4=123.4;objArray5=null;,47,2.3C#语言的运算符和表达式,for(inti=0;i=90)grade=优;elseif(score=80)grade=良;elseif(score=70)grade=中;elseif(score=60)grade=及格;elsegrade=不及格;Console.WriteLine(你的等级是:0,grade);,54,2.4C#语言的控制语句,2.4.1选择语句,2.switch语句格式:switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式n:语句n;break;default:语句n+1;break;,55,2.4C#语言的控制语句,2.4.1选择语句,注意:(1)常量表达式可以是整型数,也可以是字符或字符串,不能为浮点数。(2)同一个switch语句中的所有case后面的常量表达式的值都必须互不相同。(3)当执行完某个case后的语句时,如果后面没有break语句,系统将继续执行该语句后面的语句,直到遇到switch语句的右花括号或“break”语句止。(4)switch语句中case和default的出现次序是任意的,即default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。(5)多个case的后面可以共用一组执行语句。,56,2.4C#语言的控制语句,2.4.1选择语句,【示例】将前例改为switch语句完成。usingSystem;classGradestaticvoidMain(stringargs)floatscore;stringgrade;Console.Write(请输入你的分数:);score=float.Parse(Console.ReadLine();switch(int)score/10)case9:grade=优;break;case8:grade=良;break;case7:grade=中;break;case6:grade=及格;break;default:grade=不及格;break;Console.WriteLine(你的等级是:0,grade);,57,2.4C#语言的控制语句,2.4.2循环语句,1.while循环格式:while(表达式)循环体,图2-6while语句结构,2.dowhile循环格式:do循环体while(表达式);,图2-7dowhile语句结构,58,2.4C#语言的控制语句,2.4.2循环语句,【示例】用While循环语句编程求1+2+3+100usingSystem;classSumstaticvoidMain(stringargs)inti=1,sum=0;while(i=100)sum=sum+i;i+;Console.WriteLine(0,sum);,59,2.4C#语言的控制语句,2.4.2循环语句,【示例】用do.while循环语句编程求1+2+3+100usingSystem;classSumstaticvoidMain(stringargs)inti=1,sum=0;dosum=sum+i;i+;while(i=100);Console.WriteLine(0,sum);,60,2.4C#语言的控制语句,2.4.2循环语句,3.for循环格式:for(表达式1;表达式2;表达式3)循环体,图2-8for语句结构,61,2.4C#语言的控制语句,2.4.2循环语句,【示例】用for循环语句编程求1+2+3+100usingSystem;classSumstaticvoidMain(stringargs)inti,sum=0;for(i=1;i=100;i+)sum=sum+i;Console.WriteLine(0,sum);,62,2.4C#语言的控制语句,2.4.2循环语句,注意:(1)for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量同赋初值。省略表达式1时,其后的分号不能省略。如:inti=1;for(;i100)break;(3)表达式3也可以省略,同样程序设计时也应另外设法保证循环能正常结束。,63,2.4C#语言的控制语句,2.4.2循环语句,【示例】打印乘法九九表。usingSystem;classMultiplication_tablestaticvoidMain(stringargs)inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)Console.Write(0*1=2t,i,j,i*j);Console.WriteLine();,64,2.4C#语言的控制语句,2.4.2循环语句,4.foreach循环foreach语句为数组或对象集合中的每一个元素执行一遍循环体语句。foreach语句的格式为:foreach(变量类型迭代变量in数组名/集合表达式)循环体语句块,65,2.4C#语言的控制语句,2.4.2循环语句,【示例】用foreach编程求1+2+3+100usingSystem;classForeachTeststaticvoidMain(stringargs)intarry=newint100;/定义一个含有100个元素的数组inti,sum=0;for(i=0;i=99;i+)/通过循环为每个元素赋值为1,2100arryi=i+1;foreach(inttempinarry)/遍历数组中的每一个元素,进行累加sum=sum+temp;Console.WriteLine(sum);,66,2.4C#语言的控制语句,2.4.3跳转语句,1.goto语句goto语句实现无条件转向,它可以直接跳转到程序中用标号指定的另一行。格式:goto标号;标号:语句;2.break语句break语句用于提前结束循环。格式:break;3.continue语句continue语句只是结束本次循环,转入下一次循环条件的判断与执行。格式:break;4.return语句return语句用于退出类的方法,把控制返回方法的调用者。格式:return表达式;,67,2.4C#语言的控制语句,2.4.3跳转语句,【示例】素数的判断问题描述:从键盘输入一个自然数,输出不大于它的所有素数。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;classProgramstaticvoidMain(stringargs)inti,j,k,m=0;Console.WriteLine(请输入一个大于1的自然数);intn=Convert.ToInt32(Console.ReadLine();/变量n存储从键盘输入的数Console.WriteLine(不大于0的素数有:,n);,68,2.4C#语言的控制语句,2.4.3跳转语句,for(i=2;ij)Console.Write(0,-10,i);/左对齐,宽度为10m+;if(m%5=0)/每一行只输出5个素数Console.WriteLine();,69,2.5C#语言的复杂数据类型,2.5.1枚举,1.枚举的定义枚举用关键字enum声明,其格式如下:修饰符enum枚举名:数据类型/枚举成员列表标识符=整型常数,标识符=整型常数,标识符=整型常数,70,2.5C#语言的复杂数据类型,2.5.1枚举,说明:(1)方括号里面的内容是可选项。每个枚举类型都具有一个基础类型,包括byte、sbyte、short、ushort、int、uint、long或ulong,不能是float、char和bool类型。如果在定义的时候没有给出数据类型,默认是int。(2)枚举成员不能有相同的名称,但可以有相同的关联值。第一个枚举成员的值默认为0,从第二个成员开始,其关联值是前一个枚举成员的关联值加1。(3)枚举声明的修饰符与类声明的修饰符具有同样的意义,可以是new、public、protected、internal、private。不允许使用abstract和sealed修饰符。枚举不能是抽象的,也不允许派生。,71,2.5C#语言的复杂数据类型,2.5.1枚举,如:定义一个表示季节的枚举。enumSeasonspring,summer,autumn,winter这里使用系统默认的32位整型数作为枚举值。spring相当于0,summer相当于1,autumn相当于2,winter相当于3。枚举成员除了使用默认值之外,可以根据需要进行修改。如:重新定义一个表示季节的枚举。enumSeasonspring=2,summer,autumn,winter=-1这样spring为2,summer为3,autumn为4,winter为-1。,72,2.5C#语言的复杂数据类型,2.5.1枚举,2.访问枚举成员(1)枚举类型变量是用创建好的枚举类型来定义的,其定义格式为:枚举名变量名;如:Seasonx;/定义一个枚举类型变量x(2)枚举成员的访问方法可以用枚举名加点运算符以及成员名来访问。具体格式为:枚举名.枚举成员名如:Season.spring,73,2.5C#语言的复杂数据类型,2.5.1枚举,【示例】通过月份判断当前季节usingSystem;classEnumExampleenumSeasonspring,summer,autumn,winterstaticvoidMain(stringargs)Seasonx;/定义枚举类型变量,用于存储枚举值intmonth;Console.WriteLine(请输入1到12之间的一个数代表当前的月份:);/把从键盘接收的字符串转化为整数,赋给整型变量month=int.Parse(Console.ReadLine();x=(Season)(month-1)/3);/将整型数强制转换为枚举类型,74,2.5C#语言的复杂数据类型,2.5.1枚举,switch(x)caseSeason.spring:/访问枚举成员Console.WriteLine(现在是春天!);break;caseSeason.summer:Console.WriteLine(现在是夏天!);break;caseSeason.autumn:Console.WriteLine(现在是秋天!);break;caseSeason.winter:Console.WriteLine(现在是冬天!);break;,75,2.5C#语言的复杂数据类型,2.5.2结构,1.结构的定义结构用关键字struct声明。其格式为:修饰符struct结构名:接口列表/结构成员定义public类型成员变量名1;public类型成员变量名2;说明:修饰符包括new、public、protected、internal和private。如果不带修饰符,则C#默认结构类型为private。“:接口名列表”指的是合法的C#语言接口。C#不仅允许从接口派生子类或接口,还允许从接口派生结构。结构成员包括:变量、常量、构造函数、方法、属性、索引器、事件等。本小节仅以变量为例。,76,2.5C#语言的复杂数据类型,2.5.2结构,注意:结构的实例字段声明时不能直接赋予初始值,静态字段声明才可以初始化。结构的副本由编译器自动创建和销毁,不能声明默认构造函数和析构函数。结构直接继承自System.ValueType,类继承于System.Object,结构不能从类或其它结构继承,也不能作为一个类的基结构。结构可以实现接口。2.访问结构成员C#语言提供了结构类型变量和结构名两种方式访问结构成员。(1)结构类型变量是用创建好的结构类型来定义的,其定义格式为:结构名变量名;(2)结构成员的访问用结构名加点运算符以及成员名来访问。具体格式为:结构名.结构成员名,77,2.5C#语言的复杂数据类型,2.5.2结构,【示例】结构的使用usingSystem;structStudentpubliclongnum;publicstringname;publiccharsex;publicintage;,classTestpublicstaticvoidMain()intx;Studentstu1;/定义结构类型变量stu1stu1.num=10001;/为成员赋值=张三;stu1.sex=M;stu1.age=18;x=stu1.age;/访问结构成员Console.Write(0,1,stu1.num,);Console.WriteLine(0,1,stu1.sex,stu1.age);Console.WriteLine(x=0,x);,78,2.5C#语言的复杂数据类型,2.5.3数组,数组是一组具有相同数据结构的元素组成的有序序列,它可以存储整数对象、字符串对象或者其它的任何对象。数组中的每个元素都可以看成是一个变量,通过元素下标来访问,每个下标起始值为0,终值为维的长度减1,数组下标的确定数组的维数。1.一维数组1)一维数组的定义和初始化数组定义格式为:数据类型数组名;如:intarry;stringarr;,79,2.5C#语言的复杂数据类型,2.5.3数组,数组的初始化有两种方法,一种是静态初始化,另一种是动态初始化。静态初始化数组,不需要指明数组元素的个数,只要按顺序列出所有的元素。如:intarry=1,2,3,4,5;即:arry0=1,arry1=2,arry2=3,arry3=4,arry4=5;动态初始化数组,就是使用new关键字将数组实例化为一个对象,再为该数组对象分配内存空间。动态定义并初始化数组的格式为:数据类型数组名=new数据类型表达式;说明:表达式代表数组的长度,只能是结果为整数的常量表达式,不能用变量表示。如:intarry=newint5;intarry=newint51,2,3,4,5;intarry=newint1,2,3,4,5;,80,2.5C#语言的复杂数据类型,2.5.3数组,2)引用一维数组元素一维数组元素的引用格式为:数组名下标注意:数组的下标从0开始,数组的长度-1结束。下标不能超过数组的长度-1,否则编译器会出现异常。数组元素的访问经常会用到for循环和foreach循环。,81,2.5C#语言的复杂数据类型,2.5.3数组,【示例】统计一个一维字符数组中含有的空格的个数。usingSystem;classProgramstaticvoidMain(stringargs)charsentence=h,o,w,a,r,e,y,o,u,?;intctr=0;/计数器foreach(charcinsentence)if(c=)ctr+;Console.WriteLine(ctr=0,ctr);,82,2.5C#语言的复杂数据类型,2.5.3数组,2.多维数组一维以上的数组都可以称为多维数组。现以二维数组的使用为代表作介绍,其它数组的定义和使用方式以此类推。1)二维数组的定义和初始化二维数组的定义格式为:数据类型,数组名;定义一个二维数组:float,myArr=newfloat5,3;int,arry=0,1,2,3,4,5;相当于:arry0,0=0;arry0,1=1;arry1,0=2;arry1,1=3;arry2,0=4;arry2,1=5;,83,2.5C#语言的复杂数据类型,2.5.3数组,2.多维数组一维以上的数组都可以称为多维数组。现以二维数组的使用为代表作介绍,其它数组的定义和使用方式以此类推。1)二维数组的定义和初始化二维数组的定义格式为:数据类型,数组名;定义一个二维数组:float,myArr=newfloat5,3;int,arry=0,1,2,3,4,5;相当于:arry0,0=0;arry0,1=1;arry1,0=2;arry1,1=3;arry2,0=4;arry2,1=5;2)引用二维数组元素二维数组元素的引用格式为:数组名下标1,下标2,84,2.5C#语言的复杂数据类型,2.5.3数组,【示例】矩阵的转置usingSystem;usingSystem.Collections.Generic;usingSystem.Text;classArrayAppstaticvoidMain(stringargs)int,a=newint2,31,2,3,4,5,6;int,b=newint3,2;inti,j;Console.WriteLine(原矩阵为:);,85,2.5C#语言的复杂数据类型,2.5.3数组,for(i=0;i2;i+)for(j=0;j3;j+)Console.Write(0t,ai,j);Console.WriteLine();Console.WriteLine(n转置后矩阵:);for(i=0;i3;i+)for(j=0;j2;j+)bi,j=aj,i;Console.Write(0t,bi,j);Console.WriteLine();,86,2.5C#语言的复杂数据类型,2.5.3数组,3.不规则数组C#支持不规则数组(交错数组),即数组的基本成员还是数组,只是每个成员的维度和大小都可能不相同。在这里只简单介绍二维不规则数组,其他维的不规则数组与二维的类似。二维不规则数组的定义格式为:数据类型数组名如:intarr=newint3;即:arr0=newint1,4;arr1=newint0,3,1,5,6;arr2=newint8.7,9;可以调用数组的Length属性来确定不规则数组中的元素个数。如:arr0.Length=2。,87,2.5C#语言的复杂数据类型,for(inti=0;iarr.Length;i+)arri0=1;/每行第一列的元素值为1arrii=1;/每行最末一个元素值为1for(intj=1;jarri.Length-1;j+)arrij=arri-1j-1+arri-1j;Console.WriteLine(杨辉三角:);for(inti=0;iarr.Length;i+)for(intj=0;jarri.Length;j+)Console.Write(0t,arrij);Console.WriteLine();,88,2.5C#语言的复杂数据类型,【示例】打印杨辉三角111121133114641usingSystem;classProgramstaticvoidMain(stringargs)intn;/指定杨辉三角的长度Console.WriteLine(请输入需打印的杨辉三角的行数:);n=Convert.ToInt32(Console.ReadLine();intarr=newintn;/定义交错数组for(inti=0;iarr.Length;i+)/初始化每一行数组元素的个数arri=newinti+1;,89,2.5C#语言的复杂数据类型,2.5.3数组,4.System.Array类在.NETFramework中定义了一个System.Array类,System.Array类提供了创建、操作、搜索和排序数组的方法,因而在公共语言运行库中作为所有数组的基类。数组的秩是数组的维数。数组中维度的下限是Array中该维度的起始索引,多维数组的各个维度可以有不同的界限。一个元素就是Array中的一个值。Array的长度是它可包含的元素总数。Array类的属性和方法的调用格式为:数组名.属性名数组名.方法名(),90,2.5C#语言的复杂数据类型,2.5.4字符串,1.String类字符串字符串变量由关键字string来声明,string是.NETFramework中System.String的别名,字符串类直接派生自对象,且它是被密封的。对字符串的操作可以通过调用String类的属性和方法来实现。注意字符类型是用单引号来表示的数据,而字符串用双引号括
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 经济利益与社会责任的协调试题及答案
- Java开发中的常见问题试题及答案
- 人工智能技术对传统行业的变革试题及答案
- 行政法学的学术研究与实践相结合的策略试题及答案
- 2025标准的产品买卖合同模板
- 组建公司合作协议书模板
- 企业战略与最佳实践试题及答案
- 行政管理科研方法论试题及答案
- 【舟山】2025年浙江舟山市定海区部分事业单位公开招聘工作人员20人笔试历年典型考题及考点剖析附带答案详解
- 2025购买商品房定金合同范本
- 一般工商贸(轻工)管理人员安全生产考试题库(含答案)
- 2023年10月00322中国行政史试题及答案含解析
- 医院培训课件:《PPD试验》
- 国开电大《应用写作(汉语)》形考任务1-6答案
- 小学生国家文化安全教育
- MOOC 金融学-湖南大学 中国大学慕课答案
- 填写模板-接地装置(含连通或引下线)接头连接记录(表式一)GD3010247
- 城市规划设计计费指导意见(2004年)
- 常见病观察及护理要点
- (高清版)TDT 1059-2020 全民所有土地资源资产核算技术规程
- 2022年全国统一高考化学试卷和答案解析(全国甲卷)
评论
0/150
提交评论