第3章C程序设计基础.ppt

上传人:sccc 文档编号:5639751 上传时间:2023-08-05 格式:PPT 页数:114 大小:812.01KB
返回 下载 相关 举报
第3章C程序设计基础.ppt_第1页
第1页 / 共114页
第3章C程序设计基础.ppt_第2页
第2页 / 共114页
第3章C程序设计基础.ppt_第3页
第3页 / 共114页
第3章C程序设计基础.ppt_第4页
第4页 / 共114页
第3章C程序设计基础.ppt_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《第3章C程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第3章C程序设计基础.ppt(114页珍藏版)》请在三一办公上搜索。

1、C#程 序 设 计C#Programming Language,中原工学院软件学院,Software College,Zhongyuan University of Technology,2010-8,C#程序设计基础,第 3 章,3.1 标识符 3.2 C#中数据类型 3.3 C#中的变量和常量 3.4 结构类型和枚举类型 3.5 C#运算符和表达式 3.6 C#中常用类和结构 3.7 C#命名规范,3.1 标识符与关键字,在程序设计语言中,关键字是对编译器具有特殊意义的预定义保留标识符。如Console、if、int、do等都是Visual C#的关键字,它们不能在程序中用作标识符,除非它

2、们有一个“”前缀(只有在特殊的情况下使用,否则并不提倡这么做)。例如,“if”是一个合法的标识符,而“if”不是合法的标识符,因为它是关键字。,1.关键字(保留字),C#的关键字P33,3.1 标识符与关键字,标识符是程序中用户定义的有意义的名称,如变量和函数的名字。C#的标识符名称必须遵守以下规则:(1)所有的标识符只能由字母(包括汉字)、数字和下划线这3类字符组成,且第一个字符必须为字母或下划线。如果以下划线开头,则必须包括至少一个其他字符。(2)标识符中不能包含空格、标点符号、运算符等其他符号。(3)标识符严格区分大小写。(4)标识符不能与C#关键字名相同。(5)标识符不能与C#中的类库

3、名相同。,a12_c,3abc,abc,ab”c,?,ab c,using,2.标识符,_,ab?c,false,3.2 C#中数据类型,C#数据类型分为两类:值类型和引用类型。1.值类型:包括简单类型、枚举类型、结构类型、可空类型。2.引用类型:包括类、接口、数组、委托。一般把引用类型的变量称为对象。,C#中数据类型分类,3.2 C#中数据类型,堆栈,堆,5,6,i,j,实际数据,12345H,obj,值类型与引用类型区别,3.2 C#中数据类型,值类型与引用类型区别,3.2 C#中数据类型,值类型的变量内含变量值本身,C#的值类型可以分为简单类型、结构类型和枚举类型。下面仅介绍简单类型。,

4、1.整数类型,3.2.1值类型,2.实数类型,3.2.1值类型,3 字符类型与字符串类型,例如,可以采用如下方式字符变量赋值:char h=汉;char a=,b=+;char c=H;/字符H char c=x0048;/字符H,十六进制转义符(前缀为x)char c=u0048;/字符H,Unicode表示形式(前缀为u)char c=r;/回车,转义字符,char型,为单个Unicode字符,字符型常量必须用单引号引起来。,3.2.1值类型,英文单引号,3 字符类型与字符串类型,在表示一个字符常数时,单引号内的有效字符数量必须且只能是一个,而且不能是单引号或者反斜杠()。,3.2.1值类

5、型,char c=H;,?,char c=2H;,=,3 字符类型与字符串类型,如果是字符串(单个字符的组合),对应的类型为string。string类型的常量用双引号将字符串引起来。例如:string str=hello 同学们!;char和string类型的常量均可以使用转义符。,3.2.1值类型,英文双引号,=,字符串属于引用类型,3 字符类型与字符串类型,char和string类型的转义符 P35,3.2.1值类型,3 字符类型与字符串类型,char和string类型的转义符 P35,第二种方法是使用逐字字符串文本。这种方法将想要得到的字符串放在”和”之间。假如需要将“C:My Doc

6、uments”赋值给path:可以使用转义序列方法:string path=“C:My Documents”;也可以使用如下的语句:string path=C:MyDocuments,textBox中换行必须是rn,其他的r 或 n 或 nr 都会显示成小方框,3.2.1值类型,4.布尔类型 布尔类型数据用于表示逻辑真和逻辑假,布尔类型的类型标识符是bool。,bool类型只有两个值:true和false 例如:bool isExist=false;bool b=(i0/错误,如果某个变量只能包含“真/假”、“是/否”或“开/关”信息,则将它声明为 Boolean 类型。,3.2.1值类型,3

7、.2.2 引用类型,引用类型:包括类、接口、数组、委托。一般把引用类型的变量称为对象,引用类型也称为参考类型。和值类型相比,引用类型的变量不直接存储所包含的值,而是指向它所要存储的值。类似C中的指针。,堆栈,堆,5,6,i,j,实际数据,12345H,obj,3.2.2 引用类型,1.object类 object是C#中所有类型(包括所有的值类型和引用类型)的基类,C#中的所有类型都直接或间接地从object类中继承而来。因此,对一个object的变量可以赋予任何类型的值。float f=1.23;object obj1;/定义obj1对象 obj1=f;object obj2=China;/

8、定义obj2对象并赋初值,2.string类string类,表示一个Unicode字符序列,专门用于对字符串的操作。同样,这个类也是在.NET Framework的命名空间System中定义的,是类System.String的别名。字符串在实际中应用非常广泛,利用string类中封装的各种内部操作,可以很容易完成对字符串处理。,3.2.2 引用类型,2.string类例如:string myName=“东方不败;string str1=123+abc;/+运算符用于连接字符串 char c=Hello World!2;/运算符可以访问string中的单个字符,c=e string str2=C

9、hina;string str3=“China中国;/字符串的另一种表示形式,用引起来。bool b=(str2=str3);/=运算符用于两个字符串比较,b=true,3.2.2 引用类型,3.2.3 类型转换,数据类型在一定条件下是可以相互转换的,如intdouble类型数据。C#允许使用两种转换的方式:隐式转换和显式转换。1.隐式转换隐式转换是系统默认的、不需要加以声明就可以进行的转换。2.显式转换显式转换又叫强制类型转换,与隐式转换相反,显式转换需要用户明确地指定转换类型,3.2.3 类型转换1.隐式转换 隐式转换是系统默认的、不需要加以声明就可以进行的转换。,从低精度、小范围的数据类

10、型转换为高精度、大范围的数据类型,可以用隐式转换。,例如:int k=1;long i=2;i=k;/隐式转换,3.2.3 类型转换1.隐式转换,2.显式转换 显式转换又叫强制类型转换。显式转换需要用户明确地指定转换类型,一般在不存在该类型的隐式转换时才使用。格式如下:(类型标识符)表达式 其作用是将“表达式”值的类型转换为“类型标识符”的类型。例如:(int)1.23/把double类型的1.23转换成int类型,结果为1,3.2.3 类型转换,long k=5000;int i=(int)k,2.显式转换,3.2.3 类型转换,所有的隐式转换也都可以采用显式转换的形式来表示。如:int i

11、=10;long j=(long)i;,2.显式转换需要提醒注意以下几点:(1)显式转换可能会导致错误。进行这种转换时编译器将对转换进行溢出检测。如果有溢出说明转换失败,就表明源类型不是一个合法的目标类型,转换就无法进行。(2)对于从float、double、decimal到整型数据的转换,将通过舍入得到最接近的整型值,如果这个整型值超出目标类型的范围,则出现转换异常。(3)将大范围类型的数据转换为小范围类型的数据的时候,必须特别谨慎,因为此时有丢失数据的危险。,3.2.3 类型转换,3.2.3 类型转换,算术溢出及显式转换溢出,算术运算符(+、-、*、/)产生的结果及显式数值转换的结果可能会

12、超出目标类型可能值的范围。在一般情况下:可能会丢失数据或引发异常。,【例3.1】设计一个控制台程序说明类型转换的应用。,using System;namespace Proj3_1 class Program static void Main(string args)int i=65,i1,i2;double d=66.3456,d1,d2;char c=A,c1,c2;Console.WriteLine(i=0:d5,d=1:f,c=2,i,d,c);i1=(int)d;/强制类型转换 d1=i;/隐式类型转换 c1=(char)i;/强制类型转换 Console.WriteLine(i1=

13、0:d5,d1=1:f,c1=2,i1,d1,c1);i2=c;/隐式类型转换 d2=(int)d;/强制类型转换,转换成整数后再隐式转为double类型 c2=(char)d;/强制类型转换 Console.WriteLine(i2=0:d5,d2=1:f,c2=2,i2,d2,c2);,去掉int如何?,3.2.4 装箱和拆箱 1.装箱(转换)装箱转换是指将一个值类型的数据隐式地转换成一个对象(object)类型的数据。例如,下面语句就执行了装箱转换:int i=8;object obj=i;或object obj=(object)i;,3.2.4 装箱和拆箱 2.拆箱(转换)拆箱转换是指

14、将一个对象类型的数据显式地转换成一个值类型数据。例如,下面语句就执行了拆箱转换:object obj=2;int i=(int)obj;拆箱转换需要(而且必须)执行显式转换,这是它与装箱转换的不同之处。,3.2.4 装箱和拆箱,3.3.1 变量,3.3 C#中的变量和常量,变量用来表示一个数值、一个字符串值或者一个类的对象。变量存储的值可能会发生更改,但变量名称保持不变。C#定义了7类变量,分别是:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量。,3.3.1 变量1.变量定义(声明)使用某个变量之前,必须要告诉编译器它是一个什么样的变量,因此要对变量进行定义。定义变量的方法

15、如下:访问修饰符 数据类型 变量名=初始值;例如:string name=王华;int age=20;,3.3 C#中的变量和常量,3.3.1 变量,3.3 C#中的变量和常量,声明变量举例:int a=100;/声明一个整型变量a,并赋初值为100也可以采用先定义、后赋值的方式,例如:int a;/声明一个整型变量a a=100;/为整型变量a赋值为100另外,也可以把几个变量声明和初始化用一条语句完成,各个变量之间用逗号分隔,例如:int a=100,b,c=200,d;/声明整型变量a、b、c、d,并将a赋值100,c赋值200,未赋初值直接使用会如何?,2.理解值类型的变量 如果一个变

16、量的值是普通的类型,那么这个C#变量就是值类型的变量。值类型的变量直接把值存放在变量名标记的存储位置上。,3.3.1 变量,2.理解值类型的变量 当定义一个值类型变量并且给它赋值的时候,这个变量只能存储相同类型的数据。所以,一个int类型的变量就只能存放int类型的数据。另外,当把值赋给某个值类型的变量时,C#会首先创建这个值的一个拷贝,然后把这个拷贝放在变量名所标记的存储位置上。例如:int x;int y=2;x=y;,3.3.1 变量,3.理解引用类型的变量 引用表示所使用的是变量或对象的地址而不是变量或对象本身。当声明引用类型变量时,程序只是分配了存放这个引用的存储空间。要想创建对象并

17、把对象的存储地址赋给该变量,就需要使用new操作符。例如:MyClass var;/MyClass是已定义的类或类型 var=new MyClass();数组示例:int a=new int3 1,2,3;for(int i=0;i 3;i+)Console.Write(0,ai);,3.3.1 变量,3.3.2 常量1.直接常量 直接常量是指把程序中不变的量直接硬编码为数值或字符串值,例如,以下都是直接常量:100/整型直接常量 1.23e5/浮点型直接常量,2.符号常量通过关键字const声明的常量,包括常量的名称和它的值。常量声明的格式如下:const 数据类型 常量名=初始值;例如:c

18、onst double PI=3.14159265;const str=“中原工学院软件学院”,3.3.2 常量,2.符号常量另外还可以使用readonly关键字声明常量。readonly关键字在程序运行期间只能初始化“一次”的字段,可以在声明语句中初始化该字段,也可以在构造函数中初始化该字段。初始化以后,用readonly声明的字段的值就不能再更改。,3.3.2 常量,const 与readonly常量二者区别:readonly常量运行时初始化,const常量编译时初始化。const常量只能在声明中赋值,readonly常量既可以在声明中赋值,也可以在构造函数中赋值。,3.4.1 结构类型1

19、.结构类型的声明 结构类型由若干“成员”组成的。数据成员称为字段,每个字段都有自已的数据类型。声明结构类型的一般格式如下:struct 结构类型名称 字段访问修饰符 数据类型 字段1;字段访问修饰符 数据类型 字段2;.字段访问修饰符 数据类型 字段n;,3.4 结构类型和枚举类型,例如,以下声明一个具有姓名和年龄等字段的结构体类型Student:struct Student/声明结构类型Student public int xh;/学号 public string xm;/姓名 public string xb;/性别 public int nl;/年龄 public string bh;/

20、班号;,3.4 结构类型和枚举类型,3.4.1 结构类型,2.结构类型变量的定义 声明一个结构类型后,可以定义该结构类型的变量(简称为结构变量)。定义结构变量的一般格式如下:结构类型 结构变量;例如,在前面的结构类型Student声明后,定义它的两个变量如下:Student s1,s2;,3.4 结构类型和枚举类型,3.4.1 结构类型,3.结构变量的使用1)访问结构变量字段访问结构变量字段的一般格式如下:结构变量名.字段名 例如:s1.xh/结构变量s1的学号 s2.xm/结构变量s2的姓名 结构体变量的字段可以在程序中单独使用,与普通变量完全相同。,3.4 结构类型和枚举类型,3.4.1

21、结构类型,struct Student/声明结构类型Student public int xh;/学号 public string xm;/姓名 public string xb;/性别 public int nl;/年龄 public string bh;/班号;,3.结构变量的使用2)结构变量的赋值 结构变量的赋值有两种方式。结构变量的字段赋值:使用方法与普通变量相同。s1.xh=201008;s2.xm=“灭绝师太”;结构变量之间赋值:要求赋值的两个结构变量必须类型相同。例如:s1=s2;这样s2的所有字段值赋给s1的对应字段。,3.4 结构类型和枚举类型,3.4.1 结构类型,stru

22、ct Student/声明结构类型Student public int xh;/学号 public string xm;/姓名 public string xb;/性别 public int nl;/年龄 public string bh;/班号;,【例3.2】设计一个控制台程序说明结构类型的应用。,using System;namespace Proj3_2 class Program struct Student/结构类型声明应放在Main函数的外面 public int xh;/学号 public string xm;/姓名 public string xb;/性别 public int

23、 nl;/年龄 public string bh;/班号,3.4 结构类型和枚举类型,3.4.1 结构类型,P45 例子:3-2,static void Main(string args)Student s1,s2;/定义两个结构类型变量 s1.xh=101;s1.xm=李明;s1.xb=男;s1.nl=20;s1.bh=07001;Console.WriteLine(学号:0,姓名:1,性别:2,年龄:3,班号:4,s1.xh,s1.xm,s1.xb,s1.nl,s1.bh);s2=s1;/将结构变量s1赋给s2 s2.xh=108;s2.xm=王华;Console.WriteLine(学号

24、:0,姓名:1,性别:2,年龄:3,班号:4,s2.xh,s2.xm,s2.xb,s2.nl,s2.bh);,枚举类型也是一种自定义数据类型,它允许用符号代表数据。枚举是指程序中某个变量具有一组有限的确定的值,通过“枚举”可以将其值一一列出来。例如:一周中的7天、一年中的12个月、一年中的4个季度等。,3.4 结构类型和枚举类型,3.4.2 枚举类型,1.枚举类型的声明 一般语法形式如下:例如,声明一个名称为color的表示颜色的枚举类型:enum Color Red,Green,Blue,White,Black enum daysMon,Tue,Wed,Thu,Fri,Sat,Sun声明后,

25、可通过枚举名来访问枚举成员:枚举名.枚举成员,3.4 结构类型和枚举类型,3.4.2 枚举类型,enum 枚举名 枚举成员1,枚举成员2,2.枚举成员的赋值 在声明的枚举类型中,每一个枚举成员都有一个相对应的常量值,即枚举元素与一个整数值关联。默认情况下规定第1个枚举成员的值取0,它后面的每一个枚举成员的值按加1递增。例如:enum Color Red,Green,Blue,White,Black Color中,Red值为0,Green值为1,Blue值为2,3.4 结构类型和枚举类型,3.4.2 枚举类型,2.枚举成员的赋值可以为一个或多个枚举成员赋整型值。当某个枚举成员赋值后,其后的枚举成

26、员没有赋值的话,自动在前一个枚举成员值之上加1作为其值。例如:enum Color Red=0,Green,Blue=3,White,Black=1;则这些枚举成员的值分别为0、1、3、4、1。,3.4 结构类型和枚举类型,3.4.2 枚举类型,3.枚举类型变量的定义 声明一个枚举类型后,可以定义该枚举类型的变量。定义枚举变量的一般格式如下:枚举类型 枚举变量;例如,在前面的枚举类型Color和Days声明后,定义其变量如下:Color c1,c2;days d1,d2,3.4 结构类型和枚举类型,3.4.2 枚举类型,1)枚举变量的赋值 枚举变量=枚举名.枚举成员例如:c1=Color.Re

27、d;d2=days.Mon2)枚举变量的访问 枚举变量像普通变量一样直接访问。,3.4 结构类型和枚举类型,3.4.2 枚举类型,4.枚举类型变量的使用,P47 例子:3-3例子:工作or休息日,3.5 C#运算符和表达式,运算符是对一个或者多个返回值的代码元素执行运算的代码单元,C#的运算符包括:算术运算符逻辑运算符字符串连接运算符关系运算符赋值运算符位运算符自增自减运算符等本节将详细介绍这些运算符和表达式,以及它们的优先级。,3.5 C#运算符和表达式,3.5.1 算术运算符,3.5 C#运算符和表达式,3.5.1 算术运算符,都是一元运算符,且操作的对象只能是变量。1.自增运算自增运算符

28、(+)的作用是对变量的值加1。+m(前自增)m+(后自增)2.自减运算自减运算符(-)的作用是对变量的值减1。-m(前自减)m-(后自减),a=a+1a=a-1,int a=1;int b=a+;/a=2,b=1b=+a;/a=3,b=3,字符串运算符只有一个,就是加号(+)。它除了作为算术运算符之外,还可以将字符串连接起来,变成合并的新字符串。例如:string s=Hello;s=s+,World.;Console.WriteLine(s);/输出:Hello,World.,3.5.2 字符串运算符,赋值运算符有基本赋值运算符、复合赋值运算符两种,通常用于将表达式的值赋给一个变量。(基本)

29、赋值运算符(=)用于改变变量的值,它先求出右侧表达式的结果,然后再将结果赋给左侧的变量。例子:int i;i=4*(1+2);,3.5.3 赋值运算符,int i=(int)(1.1*4);,结果数据类型是左侧的数据类型,基本赋值运算符与其它算数运算符写在一起,构成复合赋值运算符。,3.5.3 赋值运算符,复合赋值运算符,3.5.4 关系运算符,关系运算符用于比较两个表达式之间的关系,比较的对象通常有数值、字符串和对象,关系运算的结果是一个bool值,即true或false。,3.5.5 逻辑运算符,逻辑运算符(布尔运算符)用于判断操作数之间的逻辑关系。逻辑表达式的值也是一个bool值,即tr

30、ue或false。,3.5.6 位运算符,计算机处理的数据都是以二进制的形式保存的,C#提供了一些专门针对二进制数的运算符,即位运算符。,P50 例:3-4,条件运算符是一个三元运算符,每个操作数同时又是表达式的值。由条件运算符构成的表达式称为条件表达式。使用格式如下:表达式1?表达式2:表达式3它的计算方式为,先计算“表达式1”(必须为布尔值)的值,如果其值true,则“表达式2”的值作为整个表达式的最终结果;否则“表达式3”的值作为整个表达式的值。例如,以下表达式返回a和b中的最大值:max=ab?a:b;计算过程是,当ab,max=a;否则max=b。,3.5.7 条件运算符,?:,?:

31、,或,1.is 运算符 is运算符用来比较两个对象的引用变量,检查表达式是否是指定的类型。其语法格式如下:result=is 例:int n=23;bool t1=n is int;bool t2=n is double;,3.5.8 其它运算符,2.sizeof 运算符是一种一元运算符,并不是函数。sizeof运算符以字节形式给出了其操作数的存储大小。操作数可以是一个类型名,操作数的存储大小由操作数的数据类型决定。sizeof(类型标识符)例:int n=sizeof(int);,3.5.8 其它运算符,P52 例:3-5,3.typeeof 运算符typeof运算表达式返回一个表示特定类型

32、的System.Type对象。例如,typeof(int)返回表示System.int32类型的Type对象,typeof(string)返回表示System.String类型的Type对象。该运算符在使用反射动态查找对象信息时很有用。,3.5.8 其它运算符,4.new 运算符该运算符用于创建一个类的实例。例如:Class1 MyClass=new Class1();int n=new int();/等价于 int n=0,3.5.8 其它运算符,运算符的优先级是指在表达式中哪一个运算符应该首先计算。C#根据运算符的优先级确定表达式的求值顺序:优先级高的运算先做,优先级低的操作后做,相同优先

33、级的操作从左到右依次做,同时用小括号控制运算顺序,任何在小括号内的运算最优先进行。,3.5.9 运算符的优先级,P53 表3.12,3.5.9 运算符的优先级,可归为一元运算符和括号、算术运算符、移位运算符、比较运算符、位运算及逻辑运算符、赋值运算符、后自增和后自减运算符七个等级。运算符的优先级顺序根据从第一级到第七级,优先级逐步降低。,3.5.9 运算符的优先级,运算符的结合顺序运算符的结合顺序分为左结合和右结合两种,所有的一元运算符(+、-作为后缀时除外)都是右结合的。而对于二元运算符,除了赋值运算符外,其他的都是左结合的。运算符的优先级和结合顺序可以通过小括号来控制,例如表达式:x y%

34、z本来应当先求余,再相减,如果使用小括号将“x-y”括起来:(x y)%z则应该先算(x-y),再用(x-y)的结果跟z求余。,3.6 C#中常用类和结构,C#中一切都是对象。如int数据类型就是一个类,它提供了相应的属性和方法。,C#提供了功能丰富的内建类和结构,用户也可以自己创建类。详见Chap 6。,3.6.1 String类,string类型是.NET Framework中的String类的别名。相等运算符(=和!=)用于比较两个string对象+运算符用于连接字符串 运算符可以用来访问string中的各个字符。,String类常用属性,3.6.1 String类,string类常用方

35、法,3.6.1 String类,string myString=some text;string s2=new string(a,2);/结果为aaToString()方法String.Empty 表示空字符串String类的表示方法:string str=C:testfirst.cs string str=C:testfirst.cs 取字符串中的某个字符的方法:string myString=some text;char chFirst=myString2;/结果为m,3.6.1 String类,1.字符串比较方法string.Compare(string s1,string s2)如果s

36、1大于s2,结果为1;如果s1等于s2,结果为0;如果s1小于s2,结果为-1。例:string s1=“abc”;string s2=“cde”;String.Compare(s1,s2);,不区分大小写,3.6.1 String类,1.字符串比较方法string.Compare(string s1,string s2,bool ignoreCase)ignoreCase确定是否区分大小写:true、falsestring.CompareTo(string str2)格式:str1.string.CompareTo(string str2)返回结果同:string.Compare比较两个字符

37、串是否相等,使用:Equals方法=,3.6.1 String类,2.字符串查找Contains方法:用于查找一个字符串中是否包含指定的子字符串。语法为:public bool Contains(string value)例如:string str1=this is a string.;bool b=str1.Contains(is);,3.6.1 String类,IndexOf方法:求某个字符或者子串在字符串中出现的位置。两种最常用的重载形式:public int IndexOf(string s)public int IndexOf(string s,int startIndex)Last

38、IndexOf方法:LastIndexOf方法的用法与IndexOf方法相同,查找最后一次出现的位置。例如:string str1=this is a string.;Console.WriteLine(str1.IndexOf(is);/结果为2(注意序号从0开始)Console.WriteLine(str1.LastIndexOf(is);/结果为5,2.字符串查找,3.6.1 String类,IndexOfAny方法:查找字符串中是否包含某些字符(多个不同的字符)。常用语法:public int IndexOfAny(char anyOf)例如:string s1=123abc123ab

39、c123;char c=a,b,5,8;int x=s1.IndexOfAny(c);/x结果为3,2.字符串查找,P56 例3-7求子串在主串中的位置,3.6.1 String类,截取字符串:Substring(int startIndex,int count)截取字符串从startIndex位开始,截取长度为count的字符串 例如:string str=“abc123”;string ss=str.Substring(1,4);Console.WriteLine(ss);/bc12,3.截取字符串(求子串),3.6.1 String类,删除指定数量的字符:Remove(int start

40、Index,int count)例如:string str1=this is a string.“Console.WriteLine(str1.Remove(1,2);/结果为ts is a string,3.截取字符串(求子串),3.6.1 String类,从字符串开头或结尾删除指定的字符:利用TrimStart删除字符串首部空格,利用TrimEnd删除字符串尾部空格,利用Trim删除字符串首部和尾部空格。例如:string s1=this is a book;string s2=that is a pen;string s3=is a pen;Console.WriteLine(s1.Tr

41、imStart();/删除首部空格Console.WriteLine(s2.TrimEnd();/删除尾部空格Console.WriteLine(s3.Trim();/删除首部和尾部空格,3.截取字符串(求子串),3.6.1 String类,字符串替换 Replace(string oldStr,string newStr)例如:string str1=this is a string.“Console.WriteLine(str1.Replace(is,xy);/结果为thxy xy a string,4.字符串替换,3.6.1 String类,插入字符串:Insert(int startI

42、ndex,string value)例如:string s1=abcdabcd;string s2=s1.Insert(2,12);/结果为ab12cdabcd“,5.插入字符串,3.6.1 String类,Join方法:合并:在数组的每个元素之间串联指定的分隔符,从而产生单个串联的字符串。语法为:public static string Join(string separator,string value),6.字符串的合并与拆分,3.6.1 String类,Split方法:拆分:将字符串按照指定的一个或多个字符进行分离,从而得到一个字符串数组。常用语法为:public string Spl

43、it(params char separator)例子:String str1=“abc,d,1,45”;String str2=new string10;str2=str1.Split(,);/str11=?,6.字符串的合并与拆分,3.6.1 String类,ToUpper大写ToLower小写:例如:string s1=This is a string;string s2=s1.ToUpper();/s2结果为THIS IS A STRINGstring s3=Console.ReadLine();if(s3.ToLower()=yes)Console.WriteLine(OK);,7.

44、大小写转换,3.6.1 String类,8.字符串的格式化输出,格式输出的一般形式为:N,M:格式码:表示其中的内容为可选项。N:从零开始的整数,表示第几个参数。M:可选整数,表示最小长度。若参数N的长度小于M,就用空格填充。如果M为负,则左对齐;如果M为正,则右对齐;如果未指定M,则默认为零。格式码:可选的格式化代码字符串。,P26 表2.1,3.6.1 String类,对于字符串来说,可以直接利用格式化输出得到希望的格式,例如:string s=string.Format(0,30,);/s得到的结果为30个空格的字符串 string s1=string.Format(0,-20,15);

45、/s1得到的结果为左对齐长度为20的字符串,8.字符串的格式化输出,3.6.1 String类,补充:数字的格式化输出,常用格式举例:1)在ToString中使用d格式。int i=12345;/i.ToString(d)表示将i按照实际整数宽度转换为字符串string str=i.ToString(d);Console.WriteLine(str);/结果12345/i.ToString(d8)表示将i转换为字符串,宽度为8位,不够8位左边用0填充string str1=i.ToString(d8);Console.WriteLine(str1);/结果00012345,8.字符串的格式化输

46、出,3.6.1 String类,补充:数字的格式化输出,常用格式举例:2)在string.Format中使用d格式、f格式int i=123;double j=123.45;string s1=string.Format(the value is 0,7:d,i);/0,7:d表示第0个参数,宽度7位,不够7位左边用空格填充,d表示十进制整数/=Console.WriteLine(s1);/结果 the value is 123string s2=string.Format(the value is 0,7:f3,j);/0,7:f3表示第0个参数,总宽度7位,其中小数部分占3位,不够7位左边

47、填空格/f表示浮点数Console.WriteLine(s2);/结果 the value is 123.450,3.6.1 String类,补充:数字的格式化输出,常用格式举例:3)在ToString中使用f格式。double i=12345.6789;/f2表示浮点数小数部分为2位,多余部分四舍五入,不够2位时右边补零string str=i.ToString(f2);Console.WriteLine(str);/结果 12345.68string str1=i.ToString(f6);Console.WriteLine(str1);/结果 12345.678900,3.6.1 Str

48、ing类,补充:数字的格式化输出,常用格式举例:4)在ToString中使用n格式。double i=12345.6789;/n表示整数部分从小数点向左每3位用逗号分隔开,小数部分2位,多余部分四舍五入string str=i.ToString(n);Console.WriteLine(str);/结果 12,345.68/n4表示整数部分从小数点向左每3位用逗号分隔开,小数部分4位,多余部分四舍五入string str1=i.ToString(n4);Console.WriteLine(str1);/结果 12,345.6789,3.6.1 String类,补充:数字的格式化输出,常用格式举

49、例:5)在ToString中使用p格式。double i=0.126;/p表示百分数形式string s=string.Format(the value is 0:p,i);Console.WriteLine(s);/结果 the value is 12.60%string str=i.ToString(p);Console.WriteLine(str);/结果 12.60%,3.6.1 String类,String类实际上表示的是一系列不可变的字符。说其实例是“不可变的”,是因为无法直接修改给该字符串分配的堆中的字符串。例如,在myString的后面接上另一个字符串:myString+=an

50、d a bit more;其实际操作并不是在原来myString所占内存空间的后面直接附加上第二个字符串,而是返回一个新String实例,即重新为新字符串分配内存空间。StringBuilder类位于System.Text名称空间下,使用StringBuilder类每次重新生成新字符串时不是再生成一个新实例,而是直接在原来字符串占用的内存空间上进行处理,而且它可以动态的分配占用的内存空间大小。,String和StringBuilder,3.6.1 String类,【例】StringBuilder类的基本用法。using System;using System.Text;namespace St

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号