《第2章变量与表达式精.ppt》由会员分享,可在线阅读,更多相关《第2章变量与表达式精.ppt(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2 2章变量与表达式章变量与表达式1第1页,本讲稿共72页本章要点本章要点变量的命名、类型以及赋值的方法变量的命名、类型以及赋值的方法表达式与运算符的优先级表达式与运算符的优先级值类型与引用类型值类型与引用类型字符串的定义与使用字符串的定义与使用2第2页,本讲稿共72页2.1 2.1 变变 量量变量代表了存储单元,每个变量都有一个类型。这变量代表了存储单元,每个变量都有一个类型。这决定了这个变量可以存储什么值。可以通过赋值语决定了这个变量可以存储什么值。可以通过赋值语句的操作来改变变量的值。句的操作来改变变量的值。使用变量的一条重要原则是:使用变量的一条重要原则是:变量必须先定义后使用变量
2、必须先定义后使用C#数据类型大小示例int有符号的 32 位整数int rating=20;float32 位浮点数,精确到小数点后 7 位float temperature=40.6F;byte无符号的 8 位整数byte gpa=2;short有符号的 16 位整数short salary=3400;long有符号的 64 位整数long population=23451900;bool布尔值,true 或 falsebool IsManager=true;stringUnicode 字符串string color=“Orange”char单个 Unicode 字符char gender=
3、M;3第3页,本讲稿共72页2.1.1 2.1.1 变量的声明变量的声明变量的声明采用如下的规则:变量的声明采用如下的规则:type name;其中其中typetype是变量的类型,是变量的类型,namename是变量的名称。是变量的名称。例如:例如:int a;double b;double d=2.4;string s=hello C Sharp;bool b1=true,b2=false;4第4页,本讲稿共72页2.1.2 2.1.2 变量的命名变量的命名基本的变量命名规则如下:基本的变量命名规则如下:变量名的第一个字符必须是字母、下划线(变量名的第一个字符必须是字母、下划线(_)或者)
4、或者。除去第一个字符外,其余的字符可以是字母、数字、下划线的组合。除去第一个字符外,其余的字符可以是字母、数字、下划线的组合。不可以使用对不可以使用对C#编译器而言有特定含义的名字编译器而言有特定含义的名字(即即C#语言的库语言的库函数名称和关键字名称函数名称和关键字名称)作为变量名,如作为变量名,如using、namespace、struct等等。等等。此条命名规则其实在写程序的时候系统会自动提示你的错误的,所以不必过于担心。此条命名规则其实在写程序的时候系统会自动提示你的错误的,所以不必过于担心。例如:例如:345abc class w-d-m例如:例如:wdm _myVariable V
5、AR5第5页,本讲稿共72页C#C#对于大小写字母是敏感的对于大小写字母是敏感的,所以在声明以及使用变量的时候要注,所以在声明以及使用变量的时候要注意这些,例如意这些,例如VariableVariable、variablevariable、VARIABLEVARIABLE是是3 3个不同的变量。个不同的变量。在变量的命名过程中,命名遵循一定的规则是必须的。在在变量的命名过程中,命名遵循一定的规则是必须的。在.NET.NET FrameworkFramework名称空间中有两种命名约定,分别为名称空间中有两种命名约定,分别为PascalCasePascalCase和和camelCasecamel
6、Case。它们都应用到由多个单词组成的名称中,并指定名称中的每个单词除它们都应用到由多个单词组成的名称中,并指定名称中的每个单词除了第一个字母大写外,其余字母都是小写。在了第一个字母大写外,其余字母都是小写。在camelCase中,还有中,还有一个规则,即第一个单词须以小写字母开头。一个规则,即第一个单词须以小写字母开头。6第6页,本讲稿共72页下面是下面是PascalCase变量命名的举例:变量命名的举例:AgeSumOfAppleDayOfWeek7第7页,本讲稿共72页U下面是下面是camelCase变量命名的举例:变量命名的举例:agesumOfAppledayOfWeekU Mico
7、rsoft建议:对于简单的变量,使用建议:对于简单的变量,使用camelCase规则,而比较高级的命名则使用规则,而比较高级的命名则使用PascalCase规则。规则。8第8页,本讲稿共72页2.1.3 2.1.3 变量的种类变量的种类在在C#C#语言中,我们把变量分为七种类型,分别是:语言中,我们把变量分为七种类型,分别是:静态变量静态变量 (Static VariablesStatic Variables)非静态变量非静态变量 (Instance VariablesInstance Variables)实例变量)实例变量 数组变量数组变量 (Array Variables Array Va
8、riables)值参数值参数 (Value ParametersValue Parameters)引用参数引用参数 (Reference ParametersReference Parameters)输出参数输出参数 (Output ParametersOutput Parameters)局部变量局部变量 (Local VariablesLocal Variables)9第9页,本讲稿共72页classmyClassinty=2;publicstaticintx=1;boolFunction(ints,intm,refinti,outintj)intw=2;j=x+y+i+w;上面的代码中,上
9、面的代码中,x x是静态变量,是静态变量,y y是非静态变量,是非静态变量,s0s0是数组变量,是数组变量,m m是是值参数,值参数,i i是引用参数,是引用参数,j j是输出参数,是输出参数,w w是局部变量。是局部变量。10第10页,本讲稿共72页非静态变量非静态变量不带有不带有static修饰符声明的变量称为实例变量(非静态变量)。修饰符声明的变量称为实例变量(非静态变量)。如:如:intS=2;针对类中的非静态变量而言,一旦一个类的新的实例(对象)被创建,针对类中的非静态变量而言,一旦一个类的新的实例(对象)被创建,直到该实例不再被应用从而所在空间被释放为止,该非静态变量将一直到该实例
10、不再被应用从而所在空间被释放为止,该非静态变量将一直存在。直存在。如:如:XiyoujiRenwu类类 XiyoujiRenwu zhubajie=new XiyoujiRenwu();XiyoujiRenwu sunwukong=new XiyoujiRenwu();通过对象名调用,如通过对象名调用,如zhubajie.S11第11页,本讲稿共72页静态变量静态变量带有带有static修饰符声明的变量为静态变量。一旦静态变量所属修饰符声明的变量为静态变量。一旦静态变量所属的类被装载,直到包含该类的程序运行结束时,它将一直存在。的类被装载,直到包含该类的程序运行结束时,它将一直存在。使用静态变
11、量时,不需要对其所在的类进行实例化(即不使用使用静态变量时,不需要对其所在的类进行实例化(即不使用new关键词创建对象),就可以直接通过类名来调用。关键词创建对象),就可以直接通过类名来调用。如:如:XiyoujiRenwu类类 public static int S=5 调用调用 XiyoujiRenwu.S12第12页,本讲稿共72页2.1.4 2.1.4 变量类型之间的转换变量类型之间的转换 在程序的设计中,常常会遇到变量的类型转换问题。比如在进在程序的设计中,常常会遇到变量的类型转换问题。比如在进行数学四则运算时,行数学四则运算时,intint类型的数值和类型的数值和doubledou
12、ble类型的数值可能混类型的数值可能混在一起进行运算,这样变量之间的类型转换就应运而生。在一起进行运算,这样变量之间的类型转换就应运而生。C#C#中的变量类型转换常见的主要有以下中的变量类型转换常见的主要有以下4 4种方式:种方式:通过隐式转换通过隐式转换 通过强制类型转换通过强制类型转换 使用使用ToStringToString()方法()方法 使用使用ConvertConvert类类13第13页,本讲稿共72页隐式转换隐式转换隐式转换隐式转换 隐式转换又称自动类型转换,若两种变量的类型是兼容的或者目标隐式转换又称自动类型转换,若两种变量的类型是兼容的或者目标类型的取值范围大于源类型时就可以
13、使用隐式转换。类型的取值范围大于源类型时就可以使用隐式转换。隐式转换的数据源类型以及目标类型对应表 14第14页,本讲稿共72页 强制类型转换是一种指令,它告诉编译器将一种类型转换为另强制类型转换是一种指令,它告诉编译器将一种类型转换为另外一种类型。强制转换的缺点是可能产生的结果不够精确。具体的外一种类型。强制转换的缺点是可能产生的结果不够精确。具体的强制类型转换语法为:强制类型转换语法为:(target-type)(target-type)变量或表达式变量或表达式;强制类型转换强制类型转换强制类型转换强制类型转换 例:例:int x;float y=23;x=(int)y;如果输出如果输出y
14、的值,结果是的值,结果是23.0,x的值,结果是的值,结果是2315第15页,本讲稿共72页例2.1 类型转换小例子。程序代码如下:类型转换小例子。程序代码如下:using System;using System;using System.Collections.Generic;using System.Collections.Generic;using System.Text;using System.Text;namespace ImolicitConversionnamespace ImolicitConversion class Program class Program static
15、 void Main(string args)static void Main(string args)int i=2;int i=2;double d=3.4;double d=3.4;int v1=(int)(i+d);int v1=(int)(i+d);double v2=i+d;double v2=i+d;Console.WriteLine(v1=0,v2=1,v1,v2);Console.WriteLine(v1=0,v2=1,v1,v2);Console.ReadLine();Console.ReadLine();运行结果为:运行结果为:运行结果为:运行结果为:v1=5v1=5v1
16、=5v1=5,v2=5.4v2=5.4v2=5.4v2=5.4。16第16页,本讲稿共72页using System;using System;class Testclass Test public static void Main()public static void Main()int i=10;int i=10;long j=20;long j=20;double k=30D;double k=30D;j=i;j=i;k=j;/k=j;/隐式转换隐式转换Console.WriteLine(0,1,2,i,j,k);Console.WriteLine(0,1,2,i,j,k);k=30.
17、6D;k=30.6D;j=(long)k;j=(long)k;i=(int)j;/i=(int)j;/强制类型转换强制类型转换Console.WriteLine(0,1,2,i,j,k);Console.WriteLine(0,1,2,i,j,k);Console.Read();Console.Read();运行结果为:运行结果为:运行结果为:运行结果为:1010,1010,1010 30 30,3030,30.630.617第17页,本讲稿共72页VToString()ToString()方法主要用于将变量转化为字符串类型,该方法是方法主要用于将变量转化为字符串类型,该方法是C#C#语言中非
18、常常见的一个方法。语言中非常常见的一个方法。V前面我们介绍的各种类型的变量都可以通过前面我们介绍的各种类型的变量都可以通过ToString()ToString()方法转方法转换为换为StringString类型,例如:类型,例如:int i=200;int i=200;string s=i.ToString();string s=i.ToString();这样字符串类型变量这样字符串类型变量s s的值就是的值就是200200 。ToString()ToString()ToString()ToString()方法方法方法方法18第18页,本讲稿共72页ConvertConvertConvertC
19、onvert类类类类ConvertConvert类的常见方法类的常见方法 19第19页,本讲稿共72页20第20页,本讲稿共72页using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication2 class Program static void Main(string args)int i=67;long l;double d=99.999;string s1,s2=17;bool b=true;s1=Convert.ToString(b)+Convert.ToStrin
20、g(d);Console.WriteLine(0+1-2,b,d,s1);l=i+Convert.ToInt64(s2);Console.WriteLine(0+1-2,i,s2,l);Console.ReadKey();例2.2 使用Convert方法进行类型转换的例子。运行结果为:运行结果为:运行结果为:运行结果为:true+99.999-true99.999true+99.999-true99.999true+99.999-true99.999true+99.999-true99.99967+17-8467+17-8467+17-8467+17-84 s1=b.ToString()+d.
21、ToString();21第21页,本讲稿共72页2.2 2.2 常量常量 常量就是值在程序整个生命周期内值始终不变的量。在常量就是值在程序整个生命周期内值始终不变的量。在声明常量时,要用到声明常量时,要用到constconst关键字。常量在使用的过程中,不可关键字。常量在使用的过程中,不可以对其进行赋值的改变,否则系统会自动报错。以对其进行赋值的改变,否则系统会自动报错。语法:语法:const const 数据类型数据类型 常量名常量名 =常量值常量值;示例:示例:const float _pi=3.14;const float _pi=3.14;22第22页,本讲稿共72页2.3 2.3
22、表达式与运算符表达式与运算符 C#C#中的表达式是由运算符、变量以及标点中的表达式是由运算符、变量以及标点符号依据一定的法则组合创建起来的。运算符符号依据一定的法则组合创建起来的。运算符主要是用来定义类实例中表达式操作符的。主要是用来定义类实例中表达式操作符的。23第23页,本讲稿共72页2.3.1 2.3.1 数学运算符数学运算符 C#C#中的数学运算符有中的数学运算符有5 5种:种:+加法运算符加法运算符 -减法运算符减法运算符*乘法运算符乘法运算符 /除法运算符除法运算符%取余运算符取余运算符上面的上面的5 5种运算符都是二元的,但是种运算符都是二元的,但是“”与与“-”-”运算符也可运
23、算符也可以是一元的,具体用法如下:以是一元的,具体用法如下:int i=1int i=1;i+i+;此时此时i i的值就变为了的值就变为了2 2,i+i+这个表达式可以解释为这个表达式可以解释为i=i+1i=i+1;24第24页,本讲稿共72页表达式表达式+i+i与与i+i+的含义又有不同,如下例:的含义又有不同,如下例:int i=1int i=1;int jint j;j=+i;j=+i;此程序运行的结果是:此程序运行的结果是:j=2j=2;int i=1int i=1;int jint j;j=i+;j=i+;此程序运行的结果是:此程序运行的结果是:j=1j=1;通过对以上通过对以上2
24、2个简单程序的对比,可以得知表达式个简单程序的对比,可以得知表达式i+i+是先赋值,是先赋值,后进行自身的运算后进行自身的运算,而,而+i+i正好是相反的,先进行自身的运正好是相反的,先进行自身的运算,而后再赋值算,而后再赋值。25第25页,本讲稿共72页取余运算符取余运算符 取余运算符用来求除法的余数,在取余运算符用来求除法的余数,在C#C#语言中,语言中,取余运算既适用于整数类型,也同样适用于取余运算既适用于整数类型,也同样适用于浮点型。如浮点型。如7%37%3的结果为的结果为1 1,7%2.57%2.5的结果为的结果为2 2。26第26页,本讲稿共72页2.3.2 2.3.2 赋值运算符
25、赋值运算符 赋值运算符分为赋值运算符分为2 2种类型,第一种是简单赋值运算符,种类型,第一种是简单赋值运算符,就是就是“=”=”号;第二种是复合赋值运算符,包含号;第二种是复合赋值运算符,包含5 5类,具体的如类,具体的如下表所示:下表所示:27第27页,本讲稿共72页2.3.3 2.3.3 运算符的优先级运算符的优先级 28第28页,本讲稿共72页2.4 2.4 数据类型数据类型 在在C#C#语言中,数据类型可以分为两大部分:语言中,数据类型可以分为两大部分:值类型值类型(value value typetype)和)和引用类型引用类型(reference type)(reference t
26、ype)。引用类型引用类型 类类型类类型 接口类型接口类型 代表类型代表类型 数组类型数组类型值类型值类型 简单类型简单类型 结构类型结构类型 枚举类型枚举类型 29第29页,本讲稿共72页 值类型和引用类型的不同之处是值类型的变量值直接值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。包含数据,而引用类型的变量把它们的引用存储在对象中。对于引用类型的变量,完全有可能让两个不同的变量引用同一对于引用类型的变量,完全有可能让两个不同的变量引用同一个对象,这样一来,对其中一个变量的操作就会影响到被另一个对象,这样一来,对其中一个变量的操作就会影响到被
27、另一个变量引用的对象。对于值类型的变量而言,每一个变量有它个变量引用的对象。对于值类型的变量而言,每一个变量有它们自己的数值,因此对其中一个变量的操作不可能影响到另外们自己的数值,因此对其中一个变量的操作不可能影响到另外一个变量。一个变量。30第30页,本讲稿共72页2.4.1 2.4.1 值类型值类型 简单类型简单类型简单类型简单类型 简单类型(Simple Types)是直接由一系列元素组成的数据类型。C#语言给我们提供了一组已经定义好的简单类型。单纯地从计算机的表示角度来看,这些简单类型可以分为整数类型、布尔类型、字符类型和实数类型。31第31页,本讲稿共72页1、整数类型 整数类型,顾
28、名思义,就是变量的值为整数的值类型。整数类型特征取值类型sbyte有符号8位整数-128-127byte无符号8位整数0-255short有符号16位整数-32768-32767ushort无符号16位整数0-65535int有符号32位整数-2147483648-2147483647uint无符号32位整数0-4294967295long有符号64位整数-9223372036854775808-9223372036854775807ulong无符号64位整数0-1844674407370955161532第32页,本讲稿共72页2 2、布尔类型、布尔类型 布尔类型是用来表示布尔类型是用来表示
29、“真真”和和“假假”的。布尔类型表示的的。布尔类型表示的逻辑变量只有两种取值。在逻辑变量只有两种取值。在C#C#中,分别采用中,分别采用truetrue和和falsefalse两个值两个值来表示。来表示。在在C C语言中,用语言中,用0 0来表示来表示“假假”,其他任何非零的值表示真。,其他任何非零的值表示真。在在C#C#中,布尔型变量只能是中,布尔型变量只能是truetrue或者或者falsefalse。例如:例如:boolbool x=true;x=true;33第33页,本讲稿共72页3、字符类型 字符包括数字字符、英文字母和表达符号等等,C#提供的字符类型按照国际标准,采用Unicod
30、e字符集。给一个变量赋值的语法为:char mychar=M;34第34页,本讲稿共72页转义字符意义单引号符”双引号符反斜线符0空字符(Null)a鸣铃b退格 f走纸换页 n换行r回车t横向跳到下一制表位置v竖向跳格(垂直制表)转义字符及其含义35第35页,本讲稿共72页4、实数类型 实数在C#中采用三种数据类型来表示:单精度(Float)、双精度(Double)和十进制(Decimal)类型。它们的区别在于取值范围和精度不同。单精度 float 在内存中占4个字节,提供7位有效数字。例:float x,y=1.0f;(注意初值后一定要加f或者F,否则看做double类型)双精度 doubl
31、e 占8个字节,1516位有效数字。例:double z;36第36页,本讲稿共72页 当定义一个Decimal类型变量并且给其赋值的时候,使用m或者M后缀以表示它是一个十进制类型,例如:Decimal myMoney=2.38m;若在这里我们把语句改写为:Decimal myMoney=2.38;那么在Decimal型变量myMoney被赋值前,它将被编译器当作双精度(Double)类型来处理。37第37页,本讲稿共72页结构类型结构类型结构类型结构类型 把一系列相关的变量组织成为一个单一实体的过程,我们称为生成结构的过程,这个单一实体的类型就叫做结构类型,每一个变量称为结构成员。结构类型的
32、变量采用struct来进行声明。38第38页,本讲稿共72页例如:例如:structstruct StudentStudent public string name;public string name;public bool sex;public bool sex;public string address;public string address;public int score public int score;Student p1;Student p1;p1 p1就是一个就是一个StudentStudent结构类型的变量。上面声明中的结构类型的变量。上面声明中的publicpubli
33、c表示对结构类型的成员的访问权限。对结构成员的访问通过结表示对结构类型的成员的访问权限。对结构成员的访问通过结构变量名加上访问符构变量名加上访问符“.”号,再跟成员的名称。号,再跟成员的名称。p1.name=Mike;p1.name=Mike;39第39页,本讲稿共72页注:结构类型包含的成员类型没有限制,可以相同,也可以不同,还可以把结构类型作为另一个结构类型的成员。struct Ball public double Weight;public double Radius;struct myColor public int Red;public int Green;public int Bl
34、ue;public string ColorName;这里,Ball这个结构中又包括了myColor这个结构,myColor结构包括Red、Green、Blue、ColorName 这4个成员。40第40页,本讲稿共72页 枚举(枚举(enumenum)类型是只能取值于所有列举出的有限个元素的一)类型是只能取值于所有列举出的有限个元素的一种数据类型。种数据类型。声明格式:声明格式:enum enum 枚举类型名枚举类型名 元素元素1 1,元素,元素2,;2,;其中,枚举类型名是用户定义的枚举类型的类型标识符;其中,枚举类型名是用户定义的枚举类型的类型标识符;大括号中的元素大括号中的元素1 1、
35、元素、元素2,2,是枚举类型所包含的所有元素列表。是枚举类型所包含的所有元素列表。枚举类型枚举类型枚举类型枚举类型41第41页,本讲稿共72页 比如,我们声明一个代表星期的枚举类型:比如,我们声明一个代表星期的枚举类型:enumenum WeekDay WeekDay Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday Saturday WeekDay day;WeekDay day;赋值方式如下:赋值方式如下:day=Tuesday;d
36、ay=Tuesday;42第42页,本讲稿共72页 引用类型与引用类型与C+C+中的引用类似,因为你可以将它们视作类型安中的引用类似,因为你可以将它们视作类型安全的指针。引用(在不是全的指针。引用(在不是NullNull时)总是确保指向一个对象,这个时)总是确保指向一个对象,这个对象具有指定的类型而且已经分配了地址。另外,引用可以是对象具有指定的类型而且已经分配了地址。另外,引用可以是NullNull,这表示它当前不引用或不指向任何对象。,这表示它当前不引用或不指向任何对象。C#C#中的引用类型有中的引用类型有4 4种:种:E类类E数组数组E代表代表E接口接口 2.4.2 引用类型 43第43
37、页,本讲稿共72页 在面向对象的概念中,在面向对象的概念中,类类是封装数据的基本单位。类是一是封装数据的基本单位。类是一组具有相同数据结构和相同操作的对象的集合。组具有相同数据结构和相同操作的对象的集合。是对一系列具有相同性质的对象的抽象,是对对象共同特征的是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。比如每一辆汽车都是一个对象的话,所有的汽车可以作描述。比如每一辆汽车都是一个对象的话,所有的汽车可以作为一个模板,我们就定义汽车这个类。为一个模板,我们就定义汽车这个类。传统的编程是面向过程的机制,而Visual C#使用可视化的面向对象的程序设计方法。类类类类44第44页,本讲稿
38、共72页类的声明类的声明类的声明格式如下:类的声明格式如下:class-modifersclassclassname其中其中class-modifers为类的修饰符,为类的修饰符,常用的有常用的有public,protected,private,abstractclassname为类的类名。为类的类名。45第45页,本讲稿共72页在一个类中,每个对象都是类的实例,在一个类中,每个对象都是类的实例,C#中的中的new操作符操作符可用于建立一个类的实例。可用于建立一个类的实例。可以通过调用对象的可以通过调用对象的属性、方法属性、方法和事件和事件,来访问对象的功能。,来访问对象的功能。对象创建的格式
39、如下:对象创建的格式如下:className ObjectName=new className();其中,其中,ObjectName为创建的对象名为创建的对象名对对 象象 46第46页,本讲稿共72页47(1)对象的属性。对象的性质称为属性,不同的对象有不同的属性。通过修改或设置这些属性即可有效地控制对象的外观和操作。属性的设置或修改可以通过属性窗口进行,也可以通过编辑的方法在程序运行时来改变对象的相关属性。在程序中设置属性一般格式是在程序中设置属性一般格式是:对象名对象名.属性名属性名=属性值;属性值;例如,设置窗体对象的标题为例如,设置窗体对象的标题为“欢迎来到编程世界欢迎来到编程世界”的
40、代码命的代码命令是:令是:Form1.text=“Form1.text=“欢迎来到编程世界欢迎来到编程世界”;47第47页,本讲稿共72页(2)对象的方法。方法(Method)是与对象相关联的过程与函数的统称,由系统内部定义,而不用编写代码。如窗口的关闭等。不同的对象具有不同的内部方法。(3)对象的事件。所谓事件(Event),是由Visual C#预先定义好的、能够被对象识别的动作,不同的对象能够识别的事件也有所不同。4848第48页,本讲稿共72页 一个数组就是一组类型相同的变量的集合。这些变量叫一个数组就是一组类型相同的变量的集合。这些变量叫做数组元素。可以用数组元素在数组中的做数组元素
41、。可以用数组元素在数组中的位置(即下标)位置(即下标)来引用它。来引用它。特点:所有的元素类型都相同。特点:所有的元素类型都相同。数数数数 组组组组 数组必须先声明再引用。一个数组的声明包括数组必须先声明再引用。一个数组的声明包括数组名称数组名称、数组元素类型数组元素类型和和数组维数数组维数。49第49页,本讲稿共72页 创建数组时,应该先声明,然后分配内存。做法如下:创建数组时,应该先声明,然后分配内存。做法如下:1 1、array_type array_name;array_type array_name;/声明类型为声明类型为array_typearray_type的一维数组的一维数组a
42、rray_namearray_name 2 2、array_name=array_name=newnew array_typeelement_numbers;array_typeelement_numbers;/为数组为数组array_namearray_name分配内存分配内存例如:例如:string person_name;string person_name;person_name=person_name=newnew string10;string10;50第50页,本讲稿共72页例如:例如:string person_name;string person_name;person_na
43、me=person_name=newnew string10;string10;可以写成:可以写成:string person_name=new string10;string person_name=new string10;上面说的两步也可以缩写成一步:上面说的两步也可以缩写成一步:array_type array_name=new array_typeelement_numbers;51第51页,本讲稿共72页 上面只是创建了数组,上面只是创建了数组,数组在被访问之前必须初始化数组在被访问之前必须初始化。可以。可以在创建的时候就完成初始化,有以下三种方法:在创建的时候就完成初始化,有以下
44、三种方法:(1 1)int numbers=new int 1,2,3,4,5;int numbers=new int 1,2,3,4,5;(2 2)int numbers=1,2,3,4,5;int numbers=1,2,3,4,5;(3 3)int numbersint numbers;numbers=new int 1,2,3,4,5;numbers=new int 1,2,3,4,5;也可以在创建完之后再初始化,如:也可以在创建完之后再初始化,如:int numbers=new int5;int numbers=new int5;numbers0=1;numbers0=1;numbe
45、rs1=2;numbers1=2;numbers2=3;numbers2=3;numbers3=4;numbers3=4;numbers4=5;numbers4=5;52第52页,本讲稿共72页 在数组操作中经常使用的一个重要属性是数组的长度。要在数组操作中经常使用的一个重要属性是数组的长度。要确定一维数组的长度,可以使用确定一维数组的长度,可以使用Length属性,例如:属性,例如:int ArrayLength=ArrayName.Length;如果是多维数组,则可以使用如果是多维数组,则可以使用GetLength方法确定其某一特方法确定其某一特定维的长度,例如:定维的长度,例如:int
46、ArrayLength=ArrayName.GetLength(0);/获取获取ArrayName数组第一维的长度数组第一维的长度 C#语言中还提供了语言中还提供了Sort和和Reverse这样的静态方法,可以将这样的静态方法,可以将数组按照升序或降序排列。数组按照升序或降序排列。53第53页,本讲稿共72页 例例 使用使用SortSort和和ReverseReverse方法对数组排序。方法对数组排序。using System;using System;namespace ArrayExample1namespace ArrayExample1 class Program class Prog
47、ram static void Main()static void Main()string Artists=Leonardo,Monet,Van Gogh,Klee;string Artists=Leonardo,Monet,Van Gogh,Klee;/将数组将数组ArtistsArtists做升序排列,并输出其结果;做升序排列,并输出其结果;Array.Sort(Artists);Array.Sort(Artists);for(int i=0;iArtists.Length;i+)Console.WriteLine(Artistsi);/将数组将数组Artists做降序排列,并输出其结果
48、;做降序排列,并输出其结果;Array.Reverse(Artists);for(int i=0;iArtists.Length;i+)Console.WriteLine(Artistsi);Console.ReadLine();输出结果:输出结果:KleeKleeLeonardoLeonardoMonetMonetVan GoghVan GoghVan GoghVan GoghMonetMonetLeonardoLeonardoKleeKlee54第54页,本讲稿共72页2.5 2.5 字符串字符串 C#C#内置支持功能完全的内置支持功能完全的stringstring类型。更重要的是,类型。
49、更重要的是,C#C#把字符串也当成对象,封装了所有字符串所拥有的把字符串也当成对象,封装了所有字符串所拥有的操作、排序和搜索方法。操作、排序和搜索方法。55第55页,本讲稿共72页2.5.1 2.5.1 字符串的声明和初始化字符串的声明和初始化 定义字符串最基本的方式是把一个双引号括起来的字符串赋给一定义字符串最基本的方式是把一个双引号括起来的字符串赋给一个个stringstring类型的变量:类型的变量:string s=abcdef;string s=abcdef;双引号括起来的字符串可以包含转义字符,如双引号括起来的字符串可以包含转义字符,如“n”n”或或“t”t”,都以反斜线开始,用来
50、表示换行或制表。由于反斜线,都以反斜线开始,用来表示换行或制表。由于反斜线本身在一些命令行语法(如本身在一些命令行语法(如URLURL或者目录路径)中会用到,引号或者目录路径)中会用到,引号括起的字符串中,反斜线必须在其自身前面再加一个反斜线。括起的字符串中,反斜线必须在其自身前面再加一个反斜线。如下面代码所示:如下面代码所示:string directory=C:text;string directory=C:text;56第56页,本讲稿共72页字符串也可以用原样的字符串创建,可以以字符串也可以用原样的字符串创建,可以以“”符号开头,符号开头,这样这样string构造方法就知道字符串应照原