1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,第1章,C#与NET平台介绍,本章目标,了解,.NET Framework,的结构,理解,.NET Framework,的基本概念,CLR,JIT,CTS,MSIL,了解,.NET Framework,命名空间,了解,C#,程序的基本结构,1,1 C#,语言的由来,在过去的二十年里,C和C+已经成为在商业软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的开发效率。,与VB等语言相比,同等级别的C
2、/C+应用程序往往需要更长时间来开发。,由于C/C+语言的复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。,VB以牺牲灵活性的代价来提高效率。可是这些灵活性正是C/C+程序员所需要的。这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。,2,对于C/C+用户来说,最理想的解决方案无疑是在,快速开发的同时又可以调用底层平台的所有功能,。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外,一些C/C+开发人员还需要在必
3、要的时候进行一些底层的编程。,C#(C sharp)是对这一问题的解决方案。C#是一种新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。,3,C#,语言的特点:,C#,语言是,Microsoft,发布的一种全新的编程语言,是其,.Net,战略的一枚重要棋子。,C#,语言是面向对象的、现代的编程语言,用,C#,编写的应用程序可以充分利用,.Net,的框架体系带来的优点,.,既可以用来编写基于通用网络协议的,Internet,服务软件,也可以编写各种数据库、网络
4、服务应用程序和,Windows,窗口界面程序。,C#,继承了,C/C+,的优点和灵活性,能够充分利用,OS,系统的底层功能,同时又具备了完全的面向对象特性。可以让初学者直接了解面向对象编程的各种概念,学习现代的编程思想和手段。,4,代码,被执行,C+,VB,编译器,编译器,可执行,代码,可执行,代码,R,U,N,T,I,M,E,R,U,N,T,I,M,E,2 .NET,代码的编译,语言特定的编译器和运行库,5,代码,被执行,C+,VB,编译器,编译器,可执行,代码,可执行,代码,R,U,N,T,I,M,E,R,U,N,T,I,M,E,IL,+,元数据,C,L,R,IL,和,CLR,的使用,In
5、termediate LanguageCommon Language Runtime,6,编译执行,.NET,程序,MSIL,+,元数据,机器,代码,代码,被执行,CLR,第一次编译,第二次编译,.NET,程序被编译两次,第一次编译很慢,而第二次编译较快!,语言,编译器,.NET,源代码,7,Microsoft,中间语言,MSIL,+,元数据,机器,代码,代码,被执行,CLR,MSIL,帮助语言实现互操作,IL,不是字节代码,但很接近字节代码。因此,执行应用程序时,,IL,到机器码的转换速度非常快!,通过,CLR,将,MSIL,转换为具体,CPU,的代码,CPU,无关的指令集,语言,编译器,.
6、NET,源,代码,8,程序集,client.exe,client.exe,clientlib.dll,client.exe,module,9,IL,语言范例,IL_0000:nop,IL_0001:call,IL_0006:nop,IL_0007:ldc.i4.0,IL_0008:call,IL_000d:nop,IL_000e:ldnull,IL_000f:ldftn,IL_0015:newobj,IL_001a:call,IL_001f:nop,IL_0020:newobj,IL_0025:call,IL_002a:nop,IL_002b:newobj,IL_0030:throw,10,通
7、用语言运行时,CLR,CLR,.NET,源,代码,MSIL,+,元数据,机器,代码,代码,被执行,管理内存,易于设计组件和应用程序,其对象可以跨语言互动,跨语言集成(特别是跨语言继承),JIT,编译器:一次编译,就可运行在支持运行库的任何,CPU,和操作系统上,语言,编译器,11,.NET,的语言互操作性:,不同语言编写的代码可互相调用,C#,的平台移植性:,框架,JIT,编译器,(Just In Time,即时编译器,),12,3 .NET Framework,简介,.NET Framework,类似于,JVM,.NET Framework,两个主要组件:,通用语言运行时,(CLR),统一的
8、类库集,.NET的类库:,线程,文件输入/输出(I/O),数据库支持,XML 解析,数据结构,13,.NET Framework,的体系结构,Visual Studio.NET,CLR,通用语言运行时,(CLR),Base Class Library:,IO,Drawing,Threading,Data and XML,XML Web,services,Windows Forms,Web Forms,通用语言规范,(CLS),VB,C+,C#,JScript,操作系统,.Net Framework,类库,(FCL),14,CLS,和,CTS,通用语言规范,CLS,Common Language
9、 Specification,规定所有,.NET,语言都应遵循的规则,生成可与其他语言互操作的应用程序,通用类型系统,(Common Type System,CTS),包含标准数据类型,包含准则集,CLS,、,CTS,和,MSIL,紧密配合以实现语言互操作性,15,命名空间就像在文件系统中一个文件夹容纳多个文件一样,可以看作某些类的一个容器。通过把类放入命名空间可以把相关的类组织起来,并且可以避免命名冲突。命名空间既用作程序的“内部”组织系统,也用作“外部”组织系统(一种向其他程序公开自己拥有的程序元素的方法),使用命名空间:,using,类似,#include,4,命名空间,16,1.H,c
10、lass A,2.H,class A,3.cpp,#include“1.h”,#include“2.h”,.,3.cpp,class A,class A,17,namespace a1,class A,namespace a2,class A,3.cs,using a1;,using a2;,a1.A,a2.A,18,常用命名空间,命名空间,说明,System.Drawing,处理图形和绘图,包括打印,System.Data,处理数据存取和管理,在定义,ADO.NET,技术中扮演重要角色,System.IO,管理对文件和流的同步和异步访问,System.Windows,处理基于窗体的窗口的创建
11、System.Reflection,包含从程序集读取元数据的类,System.Threading,包含用于多线程编程的类,System.Collections,包含定义各种对象集的接口和类,19,5,创建“,Hello World”,应用程序,单击“开始”,“程序”“,Microsoft Visual Studio.NET 2005”,“,Microsoft Visual Studio.NET 2005”,此时将打开,VS.NET 2005,的起始页,要创建,C#,控制台应用程序,请从列表中选择,“创建建”“项目”。此时将打开“新建项目”窗口,选择“,Visual C#,项目”作为项目类型,
12、选择“控制台应用程序”作为模板,20,C#,模板,Console.WriteLine(Hello,World,);,输出,21,HelloWorld.csproj,AssemblyInfo.cs,Program.cs,“,Hello World”,应用程序文件,22,编译和执行,C#,应用程序,要生成 C#项目,请从菜单中选择“生成”,“,生成解决方案”,该过程将编译项目中包括的所有文件,编译结果显示在“输出”窗口中,如果结果显示“,生成:1 成功或最新,,0,失败,,0,被跳过,”,则说明已经成功生成,然后即可交付该应用程序,23,要运行刚才生成的应用程序,请从菜单中选择“调试”,“开始执行
13、不调试,)”,输出结果显示在,VS.NET,控制台窗口中,24,C#,应用程序文件夹结构,Visual Studio.NET 2005 创建一个与项目同名的文件夹,此处为“HelloWorld”,该文件夹包含项目文件“HelloWorld.csproj”和其他关联文件,每个新项目都创建了 bin、obj和,Properties,三个文件夹。,Bin和obj这两个文件夹下都有一个 Debug 子目录,其中包含可执行文件 HelloWorld.exe,在“解决方案资源管理器”中启用“显示所有文件”选项,可查看“HelloWorld”项目的结构,25,/,这是用,C#,编写的一个简单的,Hel
14、loWorld,程序,using System;,namespace Notepad,class HelloWorld,static,void,Main,(),Console.WriteLine(Hello World);,声明,HelloWorld,类,描述代码的注释,Hello World,程序,程序入口点,,Main,的返回类型为,void,控制台类的,WriteLine(),方法用于显示输出结果,导入,System,命名空间,声明命名空间,Notepad,将文件保存为*,.,cs,26,说明,:,1.,程序一般包括以下几部分:,名称空间的引用:使用,using,关键字指明引用的名称空间
15、名称空间的声明:使用,namespace,关键字声明名称空间。,类:使用,class,关键字声明类。,Main,方法:,Main,方法是,C#,程序的入口。,2.,类中包含了程序所要用到的数据和所要执行的方法的定义。每个类中可以有:,(1),变量声明,(2),构造函数,(3),方法,(4),属性,(5),事件,3.,一个文件中可以有,1,个或者多个类。,4.,所有语句都以分号,;,结束。,27,C#,语言基础,第,2,章,28,目标,在,C#,中定义变量和常量,使用,C#,中的基本数据类型,理解装箱和拆箱的概念,使用,C#,中的运算符,选择结构和循环结构,定义和使用数组,了解结构和枚举,了
16、解,C#,中的预处理指令,理解,C#,中常用的字符串处理方法,29,第一个,C#,程序:,HelloWorld,using System;,class HelloWorld,static void Main(),Console.WriteLine(“Hello,World!”);,HelloWorld.cs,30,第一个,C#,程序:,HelloWorld,1:using System;,第,1,行:,using,关键字,用来引用,.NET,框架类库中的资源,通常在程序文件的开头使用,如果程序中需要多种资源,可以使用多次,using,System,命名空间,System,命名空间提供了构建应用
17、程序所需的系统统能的访问,31,第一个,C#,程序:,HelloWorld,2:class HelloWorld,3:,.,8:,第,2,,,3,,,8,行:,类,在,C#,或其他面向对象语言中,需要编写类,使用关键字,class,定义一个类,类的内容放在一对,中,示例中定义了一个名为,HelloWorld,的类,32,第一个,C#,程序:,HelloWorld,4:static void Main(),5:,.,7:,第,4,,,5,,,7,行:,Main,方法,Main,方法是应用程序的入口点,编译器将由该处开始执行程序,方法体也放在一对,中,每个,C#,的应用程序都必须包含,Main,方
18、法,33,4:static void Main(),5:,.,7:,第,4,,,5,,,7,行:,Main,方法,static,表示,Main,方法是一个全局方法,void,表示,Main,方法没有任何返回值,即返回值是空,参数放在小括号中定义。此处括号内没有内容,表明,Main,方法没有任何参数,第一个,C#,程序:,HelloWorld,34,6:Console.WriteLine(“Hello,World!”);,第,6,行:,语句,在,C#,中要执行的指令,语句之间用;分隔,编译器通过分号来区分多个语句,使用大括号,标识某个代码块的开始和结束,从而可以对语句进行组合。大括号必须成对匹配
19、第一个,C#,程序:,HelloWorld,35,6:,Console.WriteLine(“Hello,World!”);,第,6,行:,语句,HelloWorld,程序的主要目的就是在屏幕上显示一条问候,WriteLine,方法用来将问候语写到标准输出设备上。,Console,代表标准输出设备,-,屏幕,它属于,System,命名空间,WriteLine,方法是,Console,类的方法。访问类或对象的方法使用,点取符,.,来完成。,字符串用双引号“”表示,字符串“,Hello,World”,是,WriteLine,方法的参数,表示屏幕输出,的内容,第一个,C#,程序:,HelloWo
20、rld,36,系统预定义类型,类型,描 述,范围,/,精度,例子,object,所有其它类型的最根本的基础类型,object o=null;,string,字符串类型,一个字符串是一个,Unicode,字符序列,string s=Hello;,sbyte,8-bit,有符号整数类型,128.127,sbyte val=12;,short,16-bit,有符号整数类型,32,768.32,767,short val=12;,int,32-bit,有符号整数类型,2,147,483,648.2,147,483,647,int val=12;,long,64-bit,有符号整数类型,9,223,37
21、2,036,854,775,808,.9,223,372,036,854,775,807,long val1=12;,long val2=34L;,byte,8-bit,无符号整数类型,0.255,byte val1=12;,byte val2=34U;,ushort,16-bit,无符号整数类型,0.65,535,ushort val1=12;,ushort val2=34U;,uint,32-bit,无符号整数类型,0.4,294,967,295,uint val1=12;,uint val2=34U;,37,系统预定义类型,类型,描 述,范围,/,精度,例子,ulong,64-bit,无
22、符号整数类型,0.18,446,744,073,709,551,615,ulong val1=12;,ulong val2=34U;,ulong val3=56L;,ulong val4=78UL;,float,单精度浮点数类型,1.510,45,至,3.41038,,,7,位精度,float val=1.23F;,double,双精度浮点数类型,5.010324,至,1.710308,,,15,位精度,double val1=1.23;,double val2=4.56D;,bool,布尔类型类型,;,一个布尔类型数据不是真就是假,true,false,bool val1=true;,boo
23、l val2=false;,char,字符类型,;,一个字符数据是一个,Unicode,字符,char val=h;,decimal,精确十进制类型,有,28,个有效位,1.01028,至,7.91028,,,28,位精度,decimal val=1.23M;,38,字面量,类型,类别,后缀,示例,/,允许的值,bool,布尔,无,true,或,false,int,整数,无,int x=100,uint,ulog,整数,U,或,U,uint x=1000u,long,ulong,长整型,L,或,l,long x=100000L,ulong,无符号长整型,ul,uL,Ul,UL,lu,Lu,lU
24、或,LU,ulong x=4324ul,float,单精度浮点数类型,F,或,f,float x=34,.,76F,double,双精度浮点数类型,D,或,d,double x=763,.,7245D,decimal,精确十进制类型,M,或,m,decimal x=1,.,544M,char,字符,无,char x=a,string,字符串,无,string=”abc”,39,int:,int iMax=int.MaxValue;,int pVal=int.Parse(“100”);,short i16=50;,int i32=i16;,i16=i32;,错误,i16=(short)i32;
25、decimal,decimal iRate=3.9834M;,iRate=decimal.Round(iRate,2);/,四舍五入,iRate=decimal.Remainder(512.0M,51.0M);,40,bool,bool bt=(bool)1;/,错误,char,string pattern=“123abcd?”;,bool bt;,bt=char.IsLetter(pattern,3);,bt=char.IsNumber(pattern,3);,bt=char.IsLower(pattern,3);,bt=char.IsPunctuation(pattern,7);,bt=
26、char.IsLetterOrDigit(pattern,3);,41,single,double,float f=24567.66f;,double d=124.45;,If(Single.IsNaN(1/0),使用,Parse,转换数字字符串,short shParse=Int16.Parse(100);,int iParse=Int32.Parse(100);,long shParse=Int64.Parse(100);,decimal dParse=decimal.Parse(“99.99);,float sParse=float.Parse(“99.99);,double dPars
27、e=double.Parse(“99.99);,42,字符串,字符串直接量,string path;,path=”C:note.txt”;,path=“C:note.txt”;,字符串操作,索引字符串中的单个字符,string str=“abcd”;,char c=str0;,字符串连接,string s1=“My age=“;,int myAge=28;,string cat=s1+myAge;,43,字符串操作,抽取和定位子串,string poem=“In Xanadu did Kubla Khan”;,string poemSeg=poem.Substring(10);,poemSeg
28、poem.Substring(0,9);,int index=poem.IndexOf(“I”);,index=poem.LastIndexOf(“n”);,比较字符串,bool isMatch;,string title=Ancient Mariner;,isMatch=(title=ANCIENT AMRINER);,isMatch=(title.ToUpper()=ANCIENT MARINER);,isMatch=title.Equals(Ancient Mariner);,44,String,常用方法,C#,中常用的字符串处理方法:,Equals(),:比较两个字符串的值是否相等,
29、ToLower(),:将字符串转换成小写形式,IndexOf(),:查找某个字符在字符串中的位置,SubString(),:从字符串中截取子字符串,Join(),:连接字符串,Split(),:分割字符串,Trim(),:去掉字符串两边的空格,45,实例,将一文件名的扩展名改为,.dat,。例:,1.txt,改为,1.dat,using System;,using System.Collections.Generic;,using System.Linq;,using System.Text;,namespace _011,class Program,static void Main(stri
30、ng args),string filename=1.2.txt;,int indexDot=filename.LastIndexOf(.);,string extendName=dat;,filename=filename.Substring(0,indexDot+1);,filename+=extendName;,Console.WriteLine(filename);,46,String,常用方法应用,1,已有如下代码,按要求增加功能:,static void Main(string args),string email;/,电子邮件地址,Console.WriteLine(,请输入你的
31、邮箱,:,);,email=Console.ReadLine();,Console.WriteLine(,你的邮箱是,0,email);,需实现的功能:,1,、输入 yes 时,程序循环执行,2、兼容以下各种形式 yes(YES、yes、YeS.),3、提取邮箱的用户名,47,using System;,using System.Collections.Generic;,using System.Linq;,using System.Text;,namespace _011,class Program,static void Main(string args),while(1),string
32、email;/电子邮件地址,Console.WriteLine(请输入你的邮箱:);,email=Console.ReadLine();,Console.WriteLine(你的邮箱是 0,email);,Console.WriteLine(继续输入邮箱吗?);,string input=Console.ReadLine();,if(input.ToUpper()=YES)continue;,else break;,while(true),48,String,常用方法应用,2,输入一个字符串,输出每个单词,重新用下划线连接输出,使用,Split(),方法分割字符串,使用,Join(),方法连接
33、字符串,49,Split(),方法,分割字符串,代码分析,splitStrings=inputString.Split();,/,将分割后的字符串使用下划线连接在一起,joinString=,string,.Join(_,splitStrings);,返回值为,字符串数组,字符串变量名,参数:分隔符(,char,型),返回字符串,静态方法,参数,1,:连接符,参数,2,:字符串数组,关键代码:,Join(),方法,连接字符串,50,using System;,class Program,static void Main(string args),string inputString;,inpu
34、tString=Console.ReadLine();,inputString=inputString.Trim();,string splitStrings=inputString.Split();,string joinString=string.Join(_,splitStrings);,Console.WriteLine(joinString);,如果字符串两边有空格?,51,Format(),方法,两种输出字符串的方式:,string name=,李四,;,Console.WriteLine(,My name is,+name+,,,I am,+18);,string name=,李
35、四,;,Console.WriteLine(My name is,0,,,I am,1,name,18);,格式字符串,变量列表,52,String,类的,Format(),方法用来格式化字符串,关键代码:,record=string.Format(,姓名,:,0n,出生年月,:,1n,身高,:,2n,血型,:,3n,星座,:,4n,最喜欢的食物,:,5,name,birthday,height,bloodType,planet,favourFood);,Console.WriteLine(n,这是你的个人档案,:,);,Console.WriteLine(record);,参数与,WritL
36、ine(),方法相似,53,Format(),的语法小结,string,myString=,string,.Format(,格式字符串,参数列表,);,string myString=string.Format(0,乘以,1,等于,2,2,3,2*3);,格式字符串,代表,参数列表,2,乘以,3,等于,6,包括占位符x,54,小结,补充,下划线处的,占位符,,输出五个成语,string yi=,一,;,string er=,二,;,string san=,三,;,string word=string.Format(,独,_,无,_,,,_,心,_,意,,,垂涎,_,尺,,,略知,_ _,,,举
37、反,_,yi,er,san,);,Console.WriteLine(word);,string yi=,一,;,string er=,二,;,string san=,三,;,string word=string.Format(,独,0,无,1,,,2,心,1,意,,,垂涎,2,尺,,,略知,01,,,举,0,反,2,yi,er,san,);,Console.WriteLine(word);,55,枚举,access modifiers enum :enum_base enum body,class MyApp,enum Fabric:int,Cotton=1,Silk=2,Wool=4
38、static void Main(),Fabric fab=Fabric.Cotton;,int fabNum=(int)fab;,string fabType=fab.ToString();,Console.WriteLine(fab);,整型,默认为,int,默认为,internal,56,枚举和位标志,namespace MyHelloApp,class myApp,Flags,enum Fabric,Cotton=1,Silk=2,static void Main(),Fabric fab1=(Fabric)3;,Console.WriteLine(fab1.ToString();,
39、57,System.Enum,的方法,using System;,namespace App,1,class myApp,enum Fabric,Cotton=1,Silk=2,static void Main(),string fabStr=Cotton;,if(,Enum.IsDefined,(typeof(Fabric),fabStr),Fabric fab=(Fabric),Enum.Parse,(typeof(Fabric),fabStr);,Console.WriteLine(,Enum.GetName,(typeof(Fabric),2);,58,变量,static void M
40、ain(string args),/,声明布尔型、字符串型、整型、短整型和浮点型变量,bool,t,=,false,;,short n1=,30,;,int n2=,1200,;,string,str,=,jeny,;,float n3=,23.1,f;,/,显示变量值,Console.WriteLine(,布尔值,=+t);,Console.WriteLine(,短整型值,=+n1);,Console.WriteLine(,整型值,=+n2);,Console.WriteLine(,字符串值,=+,str,);,Console.WriteLine(,浮点值,=+n3);,变量中存储的值取决于
41、该变量的类型,59,常量,static void Main(string args),/PI,常量PI,const float _pi=3.14,15169,F;,/,由地球引力引起的加速度常量,单位为 cm/s*s,const float _gravity=98,0,;,/,钟摆的长度,int length=,6,0;,/,钟摆的周期,double period=0;,/,钟摆周期的计算公式,period=2*_pi*Math.Sqrt(length/_gravity);,Console.WriteLine(,钟摆的周期为 0 秒,period);,声明常量,在表达式中使用常量,const,
42、关键字用于声明常量,60,数组,数组是同一数据类型的一组值,数组属于引用类型,因此存储在堆内存中,数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行,语法:,数据类型,数组名称=new 类型 n,;,int array,Here=new int 6,;,61,数组,static void Main(string args),int count;,Console.WriteLine(“,请输入准备登机的乘客人数,);,count=int.Parse(Console.ReadLine();,/,声明一个存放姓名的字符串数组,其长度等于乘客人数,string names=new
43、 stringcount;,/,用一个 for 循环来接受姓名,for(int i=0;i,检查一个数是否大于另一个数,操作数,1,操作数,2,检查一个数是否小于另一个数,操作数,1,=,检查一个数是否大于或等于另一个数,操作数,1,=,操作数,2,=,检查一个数是否小于或等于另一个数,操作数,1,=,操作数,2,=,检查两个值是否相等,操作数,1,=,操作数,2,!=,检查两个值是否不相等,操作数,1,!=,操作数,2,74,运算符和表达式,类别,运算符,说明,表达式,成员访问运算符,.,用于访问数据结构的成员,数据结构,.,成员,赋值运算符,=,给变量赋值,操作数,1=,操作数,2,逻辑运
44、算符,&,对两个表达式执行逻辑,“,与,”,运算,操作数,1,&,操作数,2,|,对两个表达式执行逻辑,“,或,”,运算,操作数,1,|,操作数,2,!,对两个表达式执行逻辑,“,非,”,运算,!,操作数,(),将操作数强制转换为给定的数据类型,(,数据类型,),操作数,75,运算符和表达式 9,-6,赋值运算符,(=),变量,=,表达式;,例如:,身高,=177.5;,体重,=78;,性别,=,“,m,”;,76,运算符和表达式 9,-7,一元运算符,(+/-),Variable,+;,相当于,Variable=Variable+1;,Variable,-,;,相当于,Variable=Va
45、riable-1;,77,运算符和表达式,运算符,计算方法,表达式,求值,结果(设,X=10,),+=,运算结果=操作数1+操作数2,X+=,2,X=X+,2,1,2,-=,运算结果=操作数1-操作数2,X-=,2,X=X-,2,8,*=,运算结果=操作数1*操作数2,X*=,2,X=X*,2,2,0,/=,运算结果=操作数1/操作数2,X/=,2,X=X/,2,5,%=,运算结果=操作数1%操作数2,X,%,=,2,X=X%,2,0,78,运算符和表达式,C#,运算符的优先级,优先级,说明,运算符,结合性,1,括号,(),从左到右,2,自加,/,自减运算符,+/-,从右到左,3,乘法运算符,
46、除法运算符,取模运算符,*,/,%,从左到右,4,加法运算符,减法运算符,+,-,从左到右,5,小于,小于等于,大于,大于等于,=,从左到右,6,等于,不等于,=,!=,从左到右,从左到右,7,逻辑与,&,从左到右,8,逻辑或,|,从左到右,9,赋值运算符和快捷运算符,=+=*=,/=%=-=,从右到左,79,选择结构,语法:,if,(),else,选择结构用于根据表达式的值执行语句,if else,条件:只能是,bool,类型的值,80,选择结构,switch(,“cotton”,),case,“COTTON”,:case,“cotton”,:,break;,case,值3,:,case 值
47、4:,break;,switchcase,表达式可以是,int,、字符或字符串,C#,不允许从一个,case,块继续执行到下一个,case,块。每个,case,块必须以一个跳转控制语句,break,、,goto,或,return,结束,多个,case,标签可以对应一个代码块,81,循环结构,循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。,循环结构的类型,w,hile,循环,d,o,循环,f,or,循环,foreach,循环,条件:只能是,bool,类型的值,82,w,hile,循环反复执行指定的语句,直到指定的条件为真,语法:,while(,条件,),/,语句,b
48、reak,语句可用于退出循环,continue,语句可用于,跳过当前循环并开始下一循环,while,循环,83,dowhile,循环,dowhile,循环与,while,循环类似,二者区别在于 dowhile 循环中即使条件为假时也至少执行一次该循环体中的语句。,语法:,do,/,语句,while(,条件,),84,for,循环,for 循环要求只有在对特定条件进行判断后才允许执行循环,这种循环用于将某个语句或语句块重复执行预定次数的情形,语法:,for,(初始值;,条件,;,增,/,减,),/,语句,85,foreach,循环 2-1,foreach,循环用于遍历整个集合或数组,语法:,fo
49、reach(,数据类型 元素(变量),in,集合或者数组,),/,语句,86,foreach,循环2-2,static void Main(string args),/,存放字母的个数,int Letters=0;,/,存放数字的个数,int Digits=0;,/,存放标点符号的个数,int,Punctuations=0;,/,用户提供的输入,string in,str,;,Console.WriteLine(,请输入一个字符串,);,in,str,=Console.ReadLine();,/,声明 foreach 循环以遍历输入的字符串中的每个字符。,foreach(char ch in
50、in,str,),/,检查字母,if(ch,ar,.IsLetter(ch),Letters+;,/,检查数字,if(ch,ar,.IsDigit(ch),Digits+;,/,检查标点符号,if(ch,ar,.IsPunctuation(ch),Punctuations+;,Console.WriteLine(“,字母个数为:,0,Letters);,Console.WriteLine(“,数字个数为:,0,Digits);,Console.WriteLine(“,标点符号个数为:,0,Punctuations);,为所有计数器设置初始值,接受输入,对输入的每一个,字符都进行循环,使用了所有
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818