《C#入门经典教程》课件

上传人:风*** 文档编号:241627542 上传时间:2024-07-11 格式:PPT 页数:430 大小:4.82MB
返回 下载 相关 举报
《C#入门经典教程》课件_第1页
第1页 / 共430页
《C#入门经典教程》课件_第2页
第2页 / 共430页
《C#入门经典教程》课件_第3页
第3页 / 共430页
点击查看更多>>
资源描述
第第1章章C#与与NET平台介平台介绍绍本章目本章目标标了解了解.NETFramework的的结构构理解理解.NETFramework的基本概念的基本概念CLRJITCTSMSIL了解了解.NETFramework命名空命名空间了解了解C#程序的基本程序的基本结构构第1章C#与NET平台介绍本章目标了解.NETFra11C#语言的由来言的由来在过去的二十年里,C和C+已经成为在商业软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了一定的开发效率。与VB等语言相比,同等级别的C/C+应用程序往往需要更长时间来开发。由于C/C+语言的复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。VB以牺牲灵活性的代价来提高效率。可是这些灵活性正是C/C+程序员所需要的。这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。1C#语言的由来在过去的二十年里,C和C+已经成为在商业2对于C/C+用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外,一些C/C+开发人员还需要在必要的时候进行一些底层的编程。C#(C sharp)是对这一问题的解决方案。C#是一种新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。对于C/C+用户来说,最理想的解决方案无疑是在快速开发的同3C#语言的特点:C#语言是Microsoft发布的一种全新的编程语言,是其.Net战略的一枚重要棋子。C#语言是面向对象的、现代的编程语言,用C#编写的应用程序可以充分利用.Net的框架体系带来的优点.既可以用来编写基于通用网络协议的Internet服务软件,也可以编写各种数据库、网络服务应用程序和Windows窗口界面程序。C#继承了C/C+的优点和灵活性,能够充分利用OS系统的底层功能,同时又具备了完全的面向对象特性。可以让初学者直接了解面向对象编程的各种概念,学习现代的编程思想和手段。C#语言的特点:4代代代代码码被被被被执执行行行行编译器器编译器器可可执行行代代码可可执行行代代码RUNTIMERUNTIME2.NET代代码的的编译语言特定的言特定的编译器和运行器和运行库代码C+VB编译器编译器可执行可执行RR2.NET代码5代代代代码码被被被被执执行行行行编译器器编译器器可可执行行代代码可可执行行代代码RUNTIMERUNTIMEIL+元数据CLRIL和和CLR的使用的使用IntermediateLanguageCommonLanguageRuntime代码C+VB编译器编译器可执行可执行RRIL和CLR6编译执行.NET 程序MSIL+元数据元数据机器机器代代码代代码被被执行行CLR第一次第一次编译第二次第二次编译语言言编译器器.NET源源代代码编译执行.NET程序MSIL机器代码CLR第一次编译第二7Microsoft中中间语言言MSIL+元数据机器代码代码被执行CLRMSIL帮助语言实现互操作IL不是字节代码,但很接近字节代码。因此,执行应用程序时,IL到机器码的转换速度非常快!通过CLR将MSIL转换为具体CPU的代码CPU无关的指令集语言言编译器器.NET源代码Microsoft中间语言MSIL机器代码CLRMSIL帮8程序集程序集module程序集client.execlient.execlientl9ILIL语言范例言范例IL_0000:nopIL_0001:callIL_0006:nopIL_0007:ldc.i4.0IL_0008:callIL_000d:nopIL_000e:ldnullIL_000f:ldftnIL_0015:newobjIL_001a:callIL_001f:nopIL_0020:newobjIL_0025:callIL_002a:nopIL_002b:newobjIL_0030:throwIL语言范例IL_0000:nop10通用通用语言运行言运行时CLRCLR.NET源代码MSIL+元数据机器代码代码被执行管理内存易于设计组件和应用程序,其对象可以跨语言互动跨语言集成(特别是跨语言继承)JIT编译器:一次编译,就可运行在支持运行库的任何CPU和操作系统上语言言编译器器通用语言运行时CLRCLR.NET源MSIL机器代码管理内11.NET的的语言互操作性:言互操作性:不同不同语言言编写的代写的代码可互相可互相调用用C#的平台移植性:的平台移植性:框架框架JIT编译器器(JustInTime,即即时编译器器).NET的语言互操作性:123.NETFramework简介介.NETFramework类似于似于JVM.NETFramework两个主要两个主要组件:件:通用通用语言运行言运行时(CLR)统一的一的类库集集.NET的的类库类库:线线程程文件文件输输入入/输输出出(I/O)数据数据库库支持支持XML解析解析数据数据结结构构3.NETFramework简介.NETFrame13.NET Framework 的体系结构VisualStudio.NETVisualStudio.NETCLRCLR通用通用语言运行言运行时(CLR)BaseClassLibrary:BaseClassLibrary:IO,Drawing,ThreadingDataandXMLDataandXMLXMLWebXMLWebservicesservicesWindowsFormsWindowsFormsWebFormsWebForms通用通用通用通用语语言言言言规规范范范范(CLS)(CLS)VBVBC+C+C#C#JScriptJScript操作系操作系统.NetFramework类库(FCL).NETFramework的体系结构VisualStu14CLS和和CTSu通用通用语言言规范范CLS CommonLanguageSpecificationn规定所有定所有.NET语言都言都应遵循的遵循的规则n生成可与其他生成可与其他语言互操作言互操作的的应用程序用程序u通用通用类型系型系统(CommonTypeSystem,CTS)n包含包含标准数据准数据类型型n包含准包含准则集集CLS、CTS和和MSIL紧密配合以密配合以实现语言互操作性言互操作性CLS和CTS通用语言规范CLSCLS、CTS和MS15命名空命名空间就像在文件系就像在文件系统中一个文件中一个文件夹容容纳多多个文件一个文件一样,可以看作某些,可以看作某些类的一个容器。通的一个容器。通过把把类放入命名空放入命名空间可以把相关的可以把相关的类组织起来,起来,并且可以避免命名冲突。命名空并且可以避免命名冲突。命名空间既用作程序既用作程序的的“内部内部”组织系系统,也用作,也用作“外部外部”组织系系统(一种向其他程序公开自己(一种向其他程序公开自己拥有的程序元素有的程序元素的方法)的方法)使用命名空使用命名空间:using类似似#include4 命名空间命名空间就像在文件系统中一个文件夹容纳多个文件一样,可以看作161.HclassA2.HclassA3.cpp#include“1.h”#include“2.h”.3.cppclassAclassA1.H2.H3.cpp3.cpp17namespacea1classAnamespacea2classA3.csusinga1;usinga2;a1.Aa2.Anamespacea1namespacea23.cs18常用命名空常用命名空间命名空命名空间说明明System.Drawing处理理图形和形和绘图,包括打印,包括打印System.Data处理数据存取和管理,在定理数据存取和管理,在定义ADO.NET技技术中扮中扮演重要角色演重要角色System.IO管理管理对文件和流的同步和异步文件和流的同步和异步访问System.Windows处理基于窗体的窗口的理基于窗体的窗口的创建建System.Reflection包含从程序集包含从程序集读取元数据的取元数据的类System.Threading包含用于多包含用于多线程程编程的程的类System.Collections 包含定包含定义各种各种对象集的接口和象集的接口和类常用命名空间命名空间说明System.Drawing处理图195创建建“HelloWorld”应用程序用程序单击“开始开始”“程序程序”“MicrosoftVisualStudio.NET2005”“MicrosoftVisualStudio.NET2005”此此时将打开将打开VS.NET2005的起始的起始页要要创建建C#控制台控制台应用程序,用程序,请从列表中从列表中选择“创建建建建”“项目目”。此。此时将打开将打开“新建新建项目目”窗口窗口选择“VisualC#项目目”作作为项目目类型,型,选择“控控制台制台应用程序用程序”作作为模板模板5创建“HelloWorld”应用程序单击“开始”“程20C#模板模板Console.WriteLine(HelloWorld);输出出C#模板Console.WriteLine(Hello21uHelloWorld.csprojuAssemblyInfo.csuProgram.cs“HelloWorld”应用程序文件用程序文件HelloWorld.csproj“HelloWorld”22编译和和执行行C#应用程序用程序要生成要生成C#项项目,目,请请从菜从菜单单中中选择选择“生成生成”“生成解决方案生成解决方案”该过该过程将程将编译项编译项目中包括的所有文件,目中包括的所有文件,编译结编译结果果显显示在示在“输输出出”窗口中窗口中如果如果结结果果显显示示“生成生成:1成功或最新,成功或最新,0失失败败,0被跳被跳过过”,则说则说明已明已经经成功生成,然后即可交付成功生成,然后即可交付该应该应用程序用程序编译和执行C#应用程序要生成C#项目,请从菜单中选择23u要运行要运行刚才生成的才生成的应用程序,用程序,请从菜从菜单中中选择“调试”“开始开始执行行(不不调试)”u输出出结果果显示在示在VS.NET控制台窗口中控制台窗口中要运行刚才生成的应用程序,请从菜单中选择“调试”“开始执行24C#应用程序文件用程序文件夹结构构uVisualStudio.NET2005创创建一个与建一个与项项目同名的文目同名的文件件夹夹,此,此处为处为“HelloWorld”u该该文件文件夹夹包含包含项项目文件目文件“HelloWorld.csproj”和其他和其他关关联联文件文件u每个新每个新项项目都目都创创建了建了bin、obj和和Properties三个文件三个文件夹夹。uBin和和obj这这两个文件两个文件夹夹下都有一个下都有一个Debug子目子目录录,其,其中包含可中包含可执执行文件行文件HelloWorld.exeu在在“解决方案解决方案资资源管理器源管理器”中启用中启用“显显示所有文件示所有文件”选项选项,可可查查看看“HelloWorld”项项目的目的结结构构C#应用程序文件夹结构VisualStudio.NET25/这是用是用 C#编写的一个写的一个简单的的 HelloWorld程序程序usingSystem;namespaceNotepadclassHelloWorldstaticvoidMain()Console.WriteLine(HelloWorld);声明HelloWorld类描述代码的注释HelloWorld 程序程序程序入口点,Main 的返回类型为 void控制台类的WriteLine()方法用于显示输出结果导入System命名空间声明命名空间Notepad将文件保存将文件保存为*.cs/这是用C#编写的一个简单的HelloWorld程26说明明:1.程序一般包括以下几部分:程序一般包括以下几部分:名称空名称空间的引用:使用的引用:使用using关关键字指明引用的名称空字指明引用的名称空间。名称空名称空间的声明:使用的声明:使用namespace关关键字声明名称空字声明名称空间。类:使用:使用class关关键字声明字声明类。Main方法:方法:Main方法是方法是C#程序的入口。程序的入口。2.类中包含了程序所要用到的数据和所要中包含了程序所要用到的数据和所要执行的方法的定行的方法的定义。每个。每个类中中可以有:可以有:(1)变量声明量声明(2)构造函数构造函数(3)方法方法(4)属性属性(5)事件事件3.一个文件中可以有一个文件中可以有1个或者多个个或者多个类。4.所有所有语句都以分号句都以分号;结束。束。说明:27ZJWCHCC#语言基言基础第第2章章.C#语言基础第2章.28目目标标在在C#中定中定义变量和常量量和常量使用使用C#中的基本数据中的基本数据类型型理解装箱和拆箱的概念理解装箱和拆箱的概念使用使用C#中的运算符,中的运算符,选择结构和循构和循环结构构定定义和使用数和使用数组,了解,了解结构和枚构和枚举了解了解C#中的中的预处理指令理指令理解理解C#中常用的字符串中常用的字符串处理方法理方法目标在C#中定义变量和常量29第一个第一个 C#程序程序:HelloWorld1.using System;2.class HelloWorld3.4.static void Main()5.6.Console.WriteLine(“Hello,World!”);7.8.HelloWorld.cs第一个C#程序:HelloWorldusing30第一个第一个 C#程序程序:HelloWorld1:using System;第第 1 行:行:usingusing关关关关键键字字字字用来引用用来引用用来引用用来引用.NET.NET框架框架框架框架类库类库中的中的中的中的资资源源源源通常在程序文件的开通常在程序文件的开通常在程序文件的开通常在程序文件的开头头使用使用使用使用如果程序中需要多种如果程序中需要多种如果程序中需要多种如果程序中需要多种资资源,可以使用多次源,可以使用多次源,可以使用多次源,可以使用多次usingusingSystemSystem命名空命名空命名空命名空间间SystemSystem命名空命名空命名空命名空间间提供了构建提供了构建提供了构建提供了构建应应用程序所需的系用程序所需的系用程序所需的系用程序所需的系统统统统能的能的能的能的访访问问第一个C#程序:HelloWorld1:usin31第一个第一个 C#程序程序:HelloWorld2:class HelloWorld3:.8:第第 2,3,8 行:行:类类在在在在C#C#或其他面向或其他面向或其他面向或其他面向对对象象象象语语言中,需要言中,需要言中,需要言中,需要编编写写写写类类使用关使用关使用关使用关键键字字字字classclass定定定定义义一个一个一个一个类类,类类的内容放在一的内容放在一的内容放在一的内容放在一对对 中中中中示例中定示例中定示例中定示例中定义义了一个名了一个名了一个名了一个名为为HelloWorldHelloWorld的的的的类类第一个C#程序:HelloWorld2:cla32第一个第一个 C#程序程序:HelloWorld4:static void Main()5:.7:第第 4,5,7 行:行:MainMain方法方法方法方法w wMainMain方法是方法是方法是方法是应应用程序的入口点,用程序的入口点,用程序的入口点,用程序的入口点,编译编译器将由器将由器将由器将由该处该处开始开始开始开始执执行行行行程序程序程序程序w w方法体也放在一方法体也放在一方法体也放在一方法体也放在一对对中中中中w w每个每个每个每个C#C#的的的的应应用程序都必用程序都必用程序都必用程序都必须须包含包含包含包含MainMain方法方法方法方法第一个C#程序:HelloWorld4:st334:static void Main()5:.7:第第 4,5,7 行:行:MainMain方法方法方法方法 w wstaticstatic表示表示表示表示MainMain方法是一个全局方法方法是一个全局方法方法是一个全局方法方法是一个全局方法w wvoidvoid表示表示表示表示MainMain方法没有任何返回方法没有任何返回方法没有任何返回方法没有任何返回值值,即返回,即返回,即返回,即返回值值是空是空是空是空w w参数放在小括号中定参数放在小括号中定参数放在小括号中定参数放在小括号中定义义。此。此。此。此处处括号内没有内容,表明括号内没有内容,表明括号内没有内容,表明括号内没有内容,表明MainMain方法方法方法方法没有任何参数没有任何参数没有任何参数没有任何参数第一个第一个 C#程序程序:HelloWorld4:staticvoidMain()第4,346:Console.WriteLine(“Hello,World!”);第第 6 行:行:语语句句句句w w在在在在C#C#中要中要中要中要执执行的指令行的指令行的指令行的指令w w语语句之句之句之句之间间用;分隔,用;分隔,用;分隔,用;分隔,编译编译器通器通器通器通过过分号来区分多个分号来区分多个分号来区分多个分号来区分多个语语句句句句w w使用大括号使用大括号使用大括号使用大括号标识标识某个代某个代某个代某个代码块码块的开始和的开始和的开始和的开始和结结束,从而可以束,从而可以束,从而可以束,从而可以对语对语句句句句进进行行行行组组合。大括号必合。大括号必合。大括号必合。大括号必须须成成成成对对匹配。匹配。匹配。匹配。第一个第一个 C#程序程序:HelloWorld6:Console.WriteLine(“Hello,W356:Console.WriteLine(“Hello,World!”);第第 6 行:行:语语句句句句w w HelloWorldHelloWorld程序的主要目的就是在屏幕上程序的主要目的就是在屏幕上程序的主要目的就是在屏幕上程序的主要目的就是在屏幕上显显示一条示一条示一条示一条问问候候候候 WriteLineWriteLine方法用来将方法用来将方法用来将方法用来将问问候候候候语语写到写到写到写到标标准准准准输输出出出出设备设备上。上。上。上。w w ConsoleConsole代表代表代表代表标标准准准准输输出出出出设备设备-屏幕,它属于屏幕,它属于屏幕,它属于屏幕,它属于SystemSystem命名空命名空命名空命名空间间 w w WriteLineWriteLine方法是方法是方法是方法是ConsoleConsole类类的方法。的方法。的方法。的方法。访问类访问类或或或或对对象的方法使用象的方法使用象的方法使用象的方法使用 点取符点取符点取符点取符.来完成。来完成。来完成。来完成。w w 字符串用双引号字符串用双引号字符串用双引号字符串用双引号“”“”表示表示表示表示w w 字符串字符串字符串字符串“Hello,World”Hello,World”是是是是WriteLineWriteLine方法的参数,表示屏幕方法的参数,表示屏幕方法的参数,表示屏幕方法的参数,表示屏幕输输出出出出 的内容的内容的内容的内容第一个第一个 C#程序程序:HelloWorld6:Console.WriteLine(“Hello,W36系系统预统预定定义类义类型型类型型描描述述范范围/精度精度例子例子object所有其它所有其它类型的最根本的基型的最根本的基础类型型objecto=null;string字符串字符串类型,一个字符串是一型,一个字符串是一个个Unicode字符序列字符序列strings=Hello;sbyte8-bit有符号整数有符号整数类型型128.127sbyteval=12;short16-bit有符号整数有符号整数类型型32,768.32,767shortval=12;int32-bit有符号整数有符号整数类型型2,147,483,648.2,147,483,647intval=12;long64-bit有符号整数有符号整数类型型9,223,372,036,854,775,808.9,223,372,036,854,775,807longval1=12;longval2=34L;byte8-bit无符号整数无符号整数类型型0.255byteval1=12;byteval2=34U;ushort16-bit无符号整数无符号整数类型型0.65,535ushortval1=12;ushortval2=34U;uint32-bit无符号整数无符号整数类型型0.4,294,967,295uintval1=12;uintval2=34U;系统预定义类型类型描述范围/精度例子object所有其它类37系系统预统预定定义类义类型型类型型描描述述范范围/精度精度例子例子ulong64-bit无符号整数无符号整数类型型0.18,446,744,073,709,551,615ulongval1=12;ulongval2=34U;ulongval3=56L;ulongval4=78UL;float单精度浮点数精度浮点数类型型1.51045至至3.41038,7位精度位精度floatval=1.23F;double双精度浮点数双精度浮点数类型型5.010324至至1.710308,15位精度位精度doubleval1=1.23;doubleval2=4.56D;bool布布尔类型型类型型;一个布一个布尔类型数据型数据不是真就是假不是真就是假true,falseboolval1=true;boolval2=false;char字符字符类型型;一个字符数据是一个一个字符数据是一个Unicode字符字符charval=h;decimal精确十精确十进制制类型,有型,有28个有效位个有效位1.01028至至7.91028,28位精度位精度decimalval=1.23M;系统预定义类型类型描述范围/精度例子ulong64-bit38字面量字面量类型类别后缀示例/允许的值bool布布尔无无true或或falseint整数整数无无intx=100uint,ulog整数整数U或或Uuintx=1000ulong,ulong长整型整型L或或llongx=100000Lulong无符号无符号长整型整型ul,uL,Ul,UL,lu,Lu,lU或或LUulongx=4324ulfloat单精度浮点数精度浮点数类型型F或或ffloatx=34.76Fdouble双精度浮点数双精度浮点数类型型D或或ddoublex=763.7245Ddecimal精确十精确十进制制类型型M或或mdecimalx=1.544Mchar字符字符无无charx=astring字符串字符串无无string=”abc”字面量类型类别后缀示例/允许的值bool布尔无true或fa39int:intiMax=int.MaxValue;intpVal=int.Parse(“100”);shorti16=50;inti32=i16;i16=i32;错误i16=(short)i32;decimaldecimaliRate=3.9834M;iRate=decimal.Round(iRate,2);/四舍五入四舍五入iRate=decimal.Remainder(512.0M,51.0M);int:40boolboolbt=(bool)1;/错误charstringpattern=“123abcd?”;boolbt;bt=char.IsLetter(pattern,3);bt=char.IsNumber(pattern,3);bt=char.IsLower(pattern,3);bt=char.IsPunctuation(pattern,7);bt=char.IsLetterOrDigit(pattern,3);bool41single,doublefloatf=24567.66f;doubled=124.45;If(Single.IsNaN(1/0)使用使用Parse转换数字字符串数字字符串shortshParse=Int16.Parse(100);intiParse=Int32.Parse(100);longshParse=Int64.Parse(100);decimaldParse=decimal.Parse(“99.99);floatsParse=float.Parse(“99.99);doubledParse=double.Parse(“99.99);single,double42字符串字符串字符串直接量字符串直接量stringpath;path=”C:note.txt”;path=“C:note.txt”;字符串操作字符串操作索引字符串中的索引字符串中的单个字符个字符stringstr=“abcd”;charc=str0;字符串字符串连接接strings1=“Myage=“;intmyAge=28;stringcat=s1+myAge;字符串字符串直接量43字符串操作字符串操作抽取和定位子串抽取和定位子串stringpoem=“InXanadudidKublaKhan”;stringpoemSeg=poem.Substring(10);poemSeg=poem.Substring(0,9);intindex=poem.IndexOf(“I”);index=poem.LastIndexOf(“n”);比比较较字符串字符串boolisMatch;stringtitle=AncientMariner;isMatch=(title=ANCIENTAMRINER);isMatch=(title.ToUpper()=ANCIENTMARINER);isMatch=title.Equals(AncientMariner);字符串操作44String常用方法常用方法C#中常用的字符串中常用的字符串处理方法:理方法:Equals():比:比较两个字符串的两个字符串的值是否相等是否相等ToLower():将字符串:将字符串转换成小写形式成小写形式IndexOf():查找某个字符在字符串中的位置找某个字符在字符串中的位置SubString():从字符串中截取子字符串:从字符串中截取子字符串Join():连接字符串接字符串Split():分割字符串:分割字符串Trim():去掉字符串两:去掉字符串两边的空格的空格String常用方法C#中常用的字符串处理方法:45实例例将一文件名的将一文件名的扩展名改展名改为.dat。例:。例:1.txt改改为1.datusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace_011classProgramstaticvoidMain(stringargs)stringfilename=1.2.txt;intindexDot=filename.LastIndexOf(.);stringextendName=dat;filename=filename.Substring(0,indexDot+1);filename+=extendName;Console.WriteLine(filename);实例将一文件名的扩展名改为.dat。例:1.txt改为1.46String常用方法常用方法应应用用1已有如下代已有如下代码,按要求增加功能:,按要求增加功能:staticvoidMain(stringargs)stringemail;/电子子邮件地址件地址Console.WriteLine(请输入你的入你的邮箱:箱:);email=Console.ReadLine();Console.WriteLine(你的你的邮箱是箱是0,email);需需实现实现的功能:的功能:1、输输入入yes时时,程序循,程序循环执环执行行2、兼容以下各种形式兼容以下各种形式yes(YES、yes、YeS.)3、提取提取邮邮箱的用箱的用户户名名String常用方法应用1已有如下代码,按要求增加功能:s47using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace _011 class Program static void Main(string args)while(1)string 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)usingSystem;while(true)48String常用方法常用方法应应用用2输入一个字符串,入一个字符串,输出每个出每个单词,重新用下划,重新用下划线连接接输出出使用使用Split()方法分割字符串方法分割字符串使用使用Join()方法方法连接字符串接字符串String常用方法应用2输入一个字符串,输出每个单词,重49Split()方法方法分割字符串分割字符串代代码码分析分析splitStrings=inputString.Split();/将分割后的字符串使用下划将分割后的字符串使用下划线连接在一起接在一起joinString=string.Join(_,splitStrings);返回返回值为字符串数字符串数组字符串字符串变量名量名参数:分隔符(参数:分隔符(char型)型)返回字符串返回字符串静静态方法方法参数参数1:连接符接符参数参数2:字符串数:字符串数组关关键键代代码码:Join()方法方法连接字符串接字符串Split()方法分割字符串代码分析splitStrin50using System;class Program static void Main(string args)string inputString;inputString=Console.ReadLine();inputString=inputString.Trim();string splitStrings=inputString.Split();string joinString=string.Join(_,splitStrings);Console.WriteLine(joinString);如果字符串两如果字符串两边有空格?有空格?usingSystem;如果字符串两边有空格?51Format()方法方法两种两种输输出字符串的方式:出字符串的方式:stringname=李四李四;Console.WriteLine(Mynameis+name+,Iam+18);stringname=李四李四;Console.WriteLine(Mynameis0,Iam1,name,18);格式字符串格式字符串变变量列表量列表Format()方法两种输出字符串的方式:stringn52String类的的Format()方法用来格式化字符串方法用来格式化字符串关关键键代代码码:record=string.Format(姓名:姓名:0n出生年月:出生年月:1n身高:身高:2n血型:血型:3n星座:星座:4n最喜最喜欢的食物:的食物:5,name,birthday,height,bloodType,planet,favourFood);Console.WriteLine(n这是你的个人档案:是你的个人档案:);Console.WriteLine(record);参数与参数与WritLine()方法相似方法相似String类的Format()方法用来格式化字符串关键代码53Format()的的语语法小法小结结stringmyString=string.Format(格式字符串格式字符串,参数列表参数列表);stringmyString=string.Format(0乘以乘以1等于等于2,2,3,2*3);格式字符串格式字符串代表代表参数列表参数列表2乘以乘以3等于等于6包括占位符包括占位符xFormat()的语法小结stringmyString54小小结结补充充下划下划线处的的占位符占位符,输出五个成出五个成语stringyi=一一;stringer=二二;stringsan=三三;stringword=string.Format(独独_无无_,_心心_意,垂涎意,垂涎_尺,略知尺,略知_,举_反反_,yi,er,san);Console.WriteLine(word);stringyi=一一;stringer=二二;stringsan=三三;stringword=string.Format(独独0无无1,2心心1意,垂涎意,垂涎2尺,略知尺,略知01,举0反反2,yi,er,san);Console.WriteLine(word);小结补充下划线处的占位符,输出五个成语stringyi=55枚枚举举qaccess modifiers enum :enum_base enumbodyclassMyAppenumFabric:intCotton=1,Silk=2,Wool=4staticvoidMain()Fabricfab=Fabric.Cotton;intfabNum=(int)fab;stringfabType=fab.ToString();Console.WriteLine(fab);整型,默整型,默认为int默默认为internal枚举accessmodifiersenumide56枚枚举举和位和位标标志志namespaceMyHelloAppclassmyAppFlagsenumFabricCotton=1,Silk=2staticvoidMain()Fabricfab1=(Fabric)3;Console.WriteLine(fab1.ToString();枚举和位标志namespaceMyHelloApp57System.Enum的方法的方法usingSystem;namespaceApp1classmyAppenumFabricCotton=1,Silk=2staticvoidMain()stringfabStr=Cotton;if(Enum.IsDefined(typeof(Fabric),fabStr)Fabricfab=(Fabric)Enum.Parse(typeof(Fabric),fabStr);Console.WriteLine(Enum.GetName(typeof(Fabric),2);System.Enum的方法usingSystem;58变变量量staticvoidMain(stringargs)/声明布尔型、字符串型、整型、短整型和浮点型变量boolt=false;shortn1=30;intn2=1200;stringstr=jeny;floatn3=23.1f;/显示变量值Console.WriteLine(布尔值=+t);Console.WriteLine(短整型值=+n1);Console.WriteLine(整型值=+n2);Console.WriteLine(字符串值=+str);Console.WriteLine(浮点值=+n3);变量中存储的值取决于该变量的类型变量staticvoidMain(stringa59常量常量staticvoidMain(stringargs)/PI常量PIconstfloat_pi=3.1415169F;/由地球引力引起的加速度常量,单位为cm/s*sconstfloat_gravity=980;/钟摆的长度intlength=60;/钟摆的周期doubleperiod=0;/钟摆周期的计算公式period=2*_pi*Math.Sqrt(length/_gravity);Console.WriteLine(钟摆的周期为0秒,period);声明常量在表达式中使用常量qconst关键字用于声明常量常量staticvoidMain(stringar60数数组组数数组组是同一数据是同一数据类类型的一型的一组值组值数数组组属于引用属于引用类类型,因此存型,因此存储储在堆内存中在堆内存中数数组组元素初始化或元素初始化或给给数数组组元素元素赋值赋值都可以在声都可以在声明数明数组时组时或在程序的后面或在程序的后面阶阶段中段中进进行行语语法法:数据数据类类型型,数数组组名称名称=new 类类型型 n,;int arrayHere=new int 6;数组数组是同一数据类型的一组值61数数组组staticvoidMain(stringargs)intcount;Console.WriteLine(“请输入准备登机的乘客人数);count=int.Parse(Console.ReadLine();/声明一个存放姓名的字符串数组,其长度等于乘客人数stringnames=newstringcount;/用一个for循环来接受姓名for(inti=0;i检检查查一一个个数数是是否否大大于于另一个数另一个数 操作数操作数1操作数操作数2检检查查一一个个数数是是否否小小于于另一个数另一个数 操作数操作数1=检检查查一一个个数数是是否否大大于于或等于另一个数或等于另一个数 操作数操作数1=操作数操作数2=检检查查一一个个数数是是否否小小于于或等于另一个数或等于另一个数 操作数操作数1检查一个数是否74运算符和表达式运算符和表达式类别运算符运算符说明明表达式表达式成成员访问运算符运算符.用于用于访问访问数据数据结结构的成构的成员员 数据数据结结构构.成成员员赋值运算符运算符=给变给变量量赋值赋值 操作数操作数1=操作数操作数2逻辑运算符运算符&对对两个表达式两个表达式执执行行逻辑逻辑“与与”运算运算 操作数操作数1&操作数操作数2|对对两个表达式两个表达式执执行行逻辑逻辑“或或”运算运算 操作数操作数1|操作数操作数2!对对两个表达式两个表达式执执行行逻辑逻辑“非非”运算运算!操作数操作数()将操作数将操作数强强制制转换为给转换为给定定的数据的数据类类型型 (数据数据类类型型)操作数操作数运算符和表达式类别运算符说明表达式成员访问运算符.用于访问数75运算符和表达式运算符和表达式9-6赋值赋值运算符运算符(=)变量=表达式;例如:身高=177.5;体重=78;性别=“m”;运算符和表达式9-6赋值运算符(=)变量=表达式;76运算符和表达式运算符和表达式9-7一元运算符一元运算符(+/-)Variable+;相当于相当于Variable=Variable+1;Variable-;相当于相当于Variable=Variable-1;运算符和表达式9-7一元运算符(+/-)77运算符和表达式运算符和表达式运算符运算符计算方法算方法表达式表达式求求值结果(果(设X=10)+=运算运算结结果果=操作数操作数1+操作数操作数2X+=2X=X+212-=运算运算结结果果=操作数操作数1-操作数操作数2X-=2X=X-28*=运算运算结结果果=操作数操作数1*操作数操作数2X*=2X=X*220/=运算运算结结果果=操作数操作数1/操作数操作数2X/=2X=X/25%=运算运算结结果果=操作数操作数1%操作数操作数2X%=2X=X%20运算符和表达式运算符计算方法表达式求值结果(设X=1078运算符和表达式运算符和表达式C#运算符的运算符的优优先先级级优先先级说明明运算符运算符结合性合性1括号括号()从左到右从左到右2自加自加/自减运算符自减运算符+/-从右到左从右到左3乘法运算符乘法运算符除法运算符除法运算符取模运算符取模运算符*/%从左到右从左到右4加法运算符加法运算符减法运算符减法运算符+-从左到右从左到右5小于小于小于等于小于等于大于大于大于等于大于等于=从左到右从左到右6等于等于不等于不等于=!=从左到右从左到右从左到右从左到右7逻辑与与&从左到右从左到右8逻辑或或|从左到右从左到右9赋值运算符和快捷运运算符和快捷运算符算符=+=*=/=%=-=从右到左从右到左运算符和表达式C#运算符的优先级优先级说明运算符结合性1括79选择结选择结构构语语法:法:if()elseq选择结构用于根据表达式的值执行语句ifelse条件:只能是条件:只能是bool类型的型的值选择结构语法:选择结构用于根据表达式的值执行语句ife80选择结选择结构构switch(“cotton”)case“COTTON”:case“cotton”:break;case值3:case值4:break;switchcase表达式可以是表达式可以是int、字符或字、字符或字符串符串C#不允不允许从一个从一个case块继续执行到下一个行到下一个case块。每个。每个case块必必须以一个跳以一个跳转控制控制语句句break、goto或或return结束束多个多个case标签可以可以对应一个一个代代码块选择结构switch(“cotton”)switchca81循循环结环结构构循循环结环结构用于构用于对对一一组组命令命令执执行一定的次数或反行一定的次数或反复复执执行一行一组组命令,直到指定的条件命令,直到指定的条件为为真。真。循循环结环结构的构的类类型型while循循环环do循循环环for循循环环foreach循循环环条件:只能是条件:只能是bool类型的型的值循环结构循环结构用于对一组命令执行一定的次数或反复执行一组命82while循循环环反复反复执执行指定的行指定的语语句,直到指定的句,直到指定的条件条件为为真真语语法法:while(条件条件)/语语句句break 语语句可用于退出循句可用于退出循环环continue语语句可用于句可用于跳跳过过当前循当前循环环并开始下一并开始下一循循环环while循循环环while循环反复执行指定的语句,直到指定的条件为真whi83dowhile循循环环dowhile循循环环与与while循循环类环类似,二似,二者区者区别别在于在于dowhile循循环环中即使条件中即使条件为为假假时时也至少也至少执执行一次行一次该该循循环环体中的体中的语语句。句。语语法法:do/语语句句while(条件条件)dowhile循环dowhile循环与whil84for循循环环for循循环环要求只有在要求只有在对对特定条件特定条件进进行判断后才允行判断后才允许执许执行循行循环环这这种循种循环环用于将某个用于将某个语语句或句或语语句句块块重复重复执执行行预预定定次数的情形次数的情形语语法法:for(初始初始值值;条件条件;增增/减减)/语语句句for循环for循环要求只有在对特定条件进行判断后才允许85foreach循循环环2-1foreach 循环用于遍历整个集合或数组 语法:foreach(数据数据类类型型元素元素(变变量量)in 集合或者数集合或者数组组)/语语句句foreach循环2-1foreach循环用于遍历整个86foreach循循环环2-2staticvoidMain(stringargs)/存放字母的个数存放字母的个数intLetters=0;/存放数字的个数存放数字的个数intDigits=0;/存放存放标标点符号的个数点符号的个数intPunctuations=0;/用用户户提供的提供的输输入入stringinstr;Console.WriteLine(请输请输入一个字符串入一个字符串);instr=Console.ReadLine();/声明声明foreach循循环环以遍以遍历输历输入的字符串中的每个字符。入的字符串中的每个字符。foreach(charchininstr)/检查检查字母字母if(char.IsLetter(ch)Letters+;/检查检查数字数字if(char.IsDigit(ch)Digits+;/检查标检查标点符号点符号if(char.IsPunctuation(ch)Punctuations+;Console.WriteLine(“字母个数字母个数为为:0,Letters);Console.WriteLine(“数字个数数字个数为为:0,Digits);Console.WriteLine(“标标点符号个数点符号个数为为:0,Punctuations);为所有计数器设置初始值接受输入对输入的每一个字符都进行循环使用了所有输入的字符之后,循环自动终止foreach循环2-2staticvoidMain(87using System;public class WriteTestpublic static void Main()int array=1,2,3,4,5;foreach(int item in array)Console.WriteLine(item);using System;public class WriteTestpublic static void Main()int array=1,2,3,4,5;foreach(int item in array)item+=item;Console.WriteLine(item);usingSystem;usingSystem;88C#的的预处预处理指令理指令2-1预处理指令是理指令是C#编译器在器在词法分析法分析阶段段读取取的的语句。句。这些些语句可以指示句可以指示编译器包含或不器包含或不包含某些代包含某些代码,甚至可以根据,甚至可以根据预处理指令的理指令的值终止止编译。预处理指令由字符理指令由字符#标识,并且字符,并且字符#必必须是是该行的第一个非空字符。行的第一个非空字符。预处理指令最常理指令最常见的三个用途是:完成条件的三个用途是:完成条件编译、增加、增加诊断来断来报告告错误和警告、定和警告、定义代代码域。域。C#的预处理指令2-1预处理指令是C#编译器在词法分析阶段读89C#的的预处预处理指令理指令2-2C#预处理命令理命令说明明#define#undef用于定用于定义一个符号,后取消一个符号,后取消对一个符号得定一个符号得定义。如果定。如果定义了一个符号,那么在了一个符号,那么在#if指令中指令中使用使用时这个符号个符号计算算为true。#if#elif#else#endif类似似C#中得中得if、elseif和和else语句句#line改改变行号序列,并且可以行号序列,并且可以标识该行的源文件行的源文件#region#endregion用于指定一个代用于指定一个代码块,使用,使用Visualstudio.NET的大的大纲特性特性时可以展开或折叠可以展开或折叠这个代个代码块#error导致致编译器器报告一个致命告一个致命错误#warming导致致编译器器报告一个警告,并告一个警告,并继续处理理C#的预处理指令2-2C#预处理命令说明#define90#defineCLIENT#defineDEBUGusingSystem;publicclassMyApppublicstaticvoidMain()#ifDEBUG&INHOUSE#warningDebuginon.#elifDEBUG&CLIENT#errorDebugnotallowedinClientCode.#endif#defineCLIENT91控制台控制台输入和入和输出出数据数据输入入(Read,ReadLine)Console.Read()方法方法Console.Read方法用来从控制台方法用来从控制台读取一个字符,其定
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!