版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、c# c#是微软公司发布的一种面向对象的、运行于.net framework之上的高级程序设计语言。并定于在微软职业开发者论坛(pdc)上登台亮相。c#是微软公司研究员anders hejlsberg的最新成果。c#看起来与java有着惊人的相似;它包括了诸如单一继承、接口、与java几乎同样的语法和编译成中间代码再运行的过程。但是c#与java有着明显的不同,它借鉴了delphi的一个特点,与com(组件对象模型)是直接集成的,而且它是微软公司 .net windows网络框架的主角。 c#使得c+程序员可以高效的开发程序,且因可调用由 c/c+ 编写的本机原生函数,因此绝不损失c/c+原有
2、的强大的功能。因为这种继承关系,c#与c/c+具有极大的相似性,熟悉类似语言的开发者可以很快的转向c#。第第1 1章章 c#c#与与netnet平台介绍平台介绍本章目标本章目标 了解了解.net framework 的结构的结构 理解理解.net framework 的基本概念的基本概念clrclrjitjitctsctsmsilmsil 了解了解 .net framework 命名空间命名空间 了解了解c#程序的基本结构程序的基本结构1 c#1 c#语言的由来语言的由来在过去的二十年里,c和c+已经成为在商业软件的开发领域中使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过同时也牺牲了
3、一定的开发效率。与vb等语言相比,同等级别的c/c+应用程序往往需要更长时间来开发。由于c/c+语言的复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与效率之间找到一个更为理想的权衡点。vb以牺牲灵活性的代价来提高效率。可是这些灵活性正是c/c+程序员所需要的。这些解决方案对编程人员的限制过多(如屏蔽一些底层代码控制的机制),所提供的功能难以令人满意。这些语言无法方便地同早先的系统交互,也无法很好地和当前的网络编程相结合。对于c/c+用户来说,最理想的解决方案无疑是在快速开发的同时又可以调用底层平台的所有功能。他们想要一种和最新的网络标准保持同步并且能和已有的应用程序良好整合的环境。另外
4、,一些c/c+开发人员还需要在必要的时候进行一些底层的编程。c# (c sharp) 是对这一问题的解决方案。c#是一种新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于microsoft .net平台的应用程序,microsoft .net提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。 c#语言的特点: c#语言是microsoft发布的一种全新的编程语言,是其.net战略的一枚重要棋子。 c#语言是面向对象的、现代的编程语言,用c#编写的应用程序可以充分利用.net的框架体系带来的优点.既可以用来编写基于通用网络协议的internet服务软件,也可以编写各种数据库、
5、网络服务应用程序和windows窗口界面程序。 c#继承了c/c+的优点和灵活性,能够充分利用os系统的底层功能,同时又具备了完全的面向对象特性。可以让初学者直接了解面向对象编程的各种概念,学习现代的编程思想和手段。代码代码被执行被执行c+vb编译器编译器编译器编译器可执行可执行代码代码可执行可执行代码代码runtimeruntime2 .net2 .net代码的编译代码的编译语言特定的编译器和运行库语言特定的编译器和运行库代码代码被执行被执行c+vb编译器编译器编译器编译器可执行可执行代码代码可执行可执行代码代码runtimeruntimeil+元数据clril il 和和 clr clr
6、的使用的使用intermediate languageintermediate languagecommon language runtimecommon language runtime编译执行 .net 程序msil+元数据元数据机器机器代码代码代码代码被执行被执行clr第一次编译第一次编译第二次编译第二次编译.net 程序被编译两次,第一次编译很慢,而第二次程序被编译两次,第一次编译很慢,而第二次编译较快!编译较快!语言语言编译器编译器.net 源代码源代码microsoft microsoft 中间语言中间语言msil+元数据机器代码代码 被执行clrmsil帮助语言实现互操作il 不
7、是字节代码,但很接近字节代码。因此,执行应用程序时,il 到机器码的转换速度非常快!通过 clr将 msil 转换为具体 cpu 的代码cpu 无关的指令集语言语言编译器编译器.net 源代码程序集程序集moduleilil语言范例语言范例 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_0
8、025: call il_002a: nop il_002b: newobj il_0030: throw通用语言运行时通用语言运行时clrclrclr.net 源代码msil+元数据机器代码代码被执行管理内存易于设计组件和应用程序,其对象可以跨语言互动跨语言集成(特别是跨语言继承)jit 编译器:一次编译,就可运行在支持运行库的任何 cpu 和操作系统上语言语言编译器编译器 .net的语言互操作性:的语言互操作性:不同语言编写的代码可互相调用不同语言编写的代码可互相调用 c#的平台移植性:的平台移植性:框架框架jit编译器编译器(just in time, 即时编译器即时编译器)3 .net
9、 framework 3 .net framework 简介简介 .net framework类似于类似于jvm .net framework 两个主要组件:两个主要组件:通用语言运行时通用语言运行时 (clr)统一的类库集统一的类库集 .net.net的类库的类库: :线程线程文件输入文件输入/ /输出输出 (i/o) (i/o)数据库支持数据库支持xml xml 解析解析数据结构数据结构.net framework 的体系结构通用语言运行时通用语言运行时 (clr)io, drawing, threading操作系统操作系统.net framework 类类库库 (fcl)clscls和和
10、ctscts 通用语言规范通用语言规范 cls common language specification规定所有规定所有 .net 语言都应语言都应遵循的规则遵循的规则生成可与其他语言互操作生成可与其他语言互操作的应用程序的应用程序 通用类型系统通用类型系统 (common type system, cts) 包含标准数据类型包含标准数据类型 包含准则集包含准则集cls、cts 和和 msil 紧密配合以实现语言互操作性紧密配合以实现语言互操作性命名空间就像在文件系统中一个文件夹容纳多命名空间就像在文件系统中一个文件夹容纳多个文件一样,可以看作某些类的一个容器。通个文件一样,可以看作某些类的
11、一个容器。通过把类放入命名空间可以把相关的类组织起来,过把类放入命名空间可以把相关的类组织起来,并且可以避免命名冲突。命名空间既用作程序并且可以避免命名冲突。命名空间既用作程序的的“内部内部”组织系统,也用作组织系统,也用作“外部外部”组织系组织系统(一种向其他程序公开自己拥有的程序元素统(一种向其他程序公开自己拥有的程序元素的方法)的方法)使用命名空间:使用命名空间:using类似类似#include4 命名空间1.hclass a 2.hclass a 3.cpp#include “1.h”#include “2.h”.3.cppclass a class a namespace a1cl
12、ass a namespace a2class a 3.csusing a1;using a2;a1.aa2.a常用命名空间常用命名空间命名空间命名空间说明说明system.drawing 处理图形和绘图,包括打印处理图形和绘图,包括打印 system.data 处理数据存取和管理,在定义处理数据存取和管理,在定义 ado.net 技术中扮技术中扮演重要角色演重要角色system.io 管理对文件和流的同步和异步访问管理对文件和流的同步和异步访问system.windows 处理基于窗体的窗口的创建处理基于窗体的窗口的创建system.reflection 包含从程序集读取元数据的类包含从程序
13、集读取元数据的类system.threading 包含用于多线程编程的类包含用于多线程编程的类 system.collections 包含定义各种对象集的接口和类包含定义各种对象集的接口和类5 5 创建创建“hello world”hello world”应用程序应用程序 单击单击“开始开始”“程序程序”“microsoft visual studio .net 2005”“microsoft visual studio .net 2005” 此时将打开此时将打开 vs.net 2005 的起始页的起始页 要创建要创建 c# 控制台应用程序,请从列表中选择控制台应用程序,请从列表中选择 “创创
14、建建建建”“项目项目”。此时将打开。此时将打开“新建项目新建项目”窗口窗口 选择选择“visual c# 项目项目”作为项目类型,选择作为项目类型,选择“控制台控制台应用程序应用程序”作为模板作为模板 c# 模板模板console.writeline(hello world);输出输出 helloworld.csproj assemblyinfo.cs program.cs“hello world”应用程序文件应用程序文件编译和执行编译和执行 c# c# 应用程序应用程序 要生成要生成 c# c# 项目,请从菜单中选择项目,请从菜单中选择“生成生成” “生成解决方案生成解决方案” 该过程将编译
15、项目中包括的所有文件,编译结该过程将编译项目中包括的所有文件,编译结果显示在果显示在“输出输出”窗口中窗口中 如果结果显示如果结果显示“生成生成: 1 成功或最新,成功或最新,0 0失败,失败,0 0被跳过被跳过”,则说明已经成功生成,然后即可交,则说明已经成功生成,然后即可交付该应用程序付该应用程序要运行刚才生成的应用程序,请从菜单中选要运行刚才生成的应用程序,请从菜单中选择择“调试调试”“开始执行开始执行(不调试不调试)”输出结果显示在输出结果显示在 vs.net 控制台窗口中控制台窗口中c# c# 应用程序文件夹结构应用程序文件夹结构 visual studio .net 2005 创建
16、一个与项目同名的文创建一个与项目同名的文件夹,此处为件夹,此处为“helloworld” 该文件夹包含项目文件该文件夹包含项目文件“helloworld.csproj”和其和其他关联文件他关联文件 每个新项目都创建了每个新项目都创建了 bin、obj和和properties 三个文三个文件夹。件夹。 bin和和obj这两个文件夹下都有一个这两个文件夹下都有一个 debug 子目录,其子目录,其中包含可执行文件中包含可执行文件 helloworld.exe 在在“解决方案资源管理器解决方案资源管理器”中启用中启用“显示所有文件显示所有文件”选选项,可查看项,可查看“helloworld”项目的结
17、构项目的结构 /这是用这是用 c# 编写的一个简单的编写的一个简单的 helloworld 程序程序using system;namespace notepadclass helloworldstatic void main()console.writeline(hello world);声明 helloworld 类描述代码的注释hello worldhello world 程序程序程序入口点, main 的返回类型为 void控制台类的 writeline() 方法用于显示输出结果导入 system 命名空间声明命名空间 notepad将文件保存为将文件保存为 *.cs说明说明:1. 程序
18、一般包括以下几部分:程序一般包括以下几部分:名称空间的引用:使用名称空间的引用:使用using关键字指明引用的名称空间。关键字指明引用的名称空间。名称空间的声明:使用名称空间的声明:使用namespace关键字声明名称空间。关键字声明名称空间。类:使用类:使用class关键字声明类。关键字声明类。main方法:方法:main方法是方法是c# 程序的入口。程序的入口。2. 类中包含了程序所要用到的数据和所要执行的方法的定义。每个类中可类中包含了程序所要用到的数据和所要执行的方法的定义。每个类中可以有:以有: (1)变量声明变量声明 (2)构造函数构造函数 (3)方法方法 (4)属性属性 (5)事
19、件事件3. 一个文件中可以有一个文件中可以有1个或者多个类。个或者多个类。4. 所有语句都以分号所有语句都以分号;结束。结束。 c#语言基础语言基础第第2 2章章目标目标 在在c#中定义变量和常量中定义变量和常量 使用使用c#中的基本数据类型中的基本数据类型 理解装箱和拆箱的概念理解装箱和拆箱的概念 使用使用c#中的运算符,选择结构和循环结构中的运算符,选择结构和循环结构 定义和使用数组,了解结构和枚举定义和使用数组,了解结构和枚举 了解了解c#中的预处理指令中的预处理指令 理解理解c#中常用的字符串处理方法中常用的字符串处理方法第一个第一个 c#程序程序 :helloworld using
20、system; class helloworld static void main( ) console.writeline(“hello, world!”); helloworld.cs第一个第一个 c#程序程序 :helloworld1: using system;第第 1 行:行: using 关键字关键字用来引用用来引用.net框架类库中的资源框架类库中的资源通常在程序文件的开头使用通常在程序文件的开头使用如果程序中需要多种资源,可以使用多次如果程序中需要多种资源,可以使用多次using system 命名空间命名空间system命名空间提供了构建应用程序所需的系统统能的访问命名空间提
21、供了构建应用程序所需的系统统能的访问第一个第一个 c# 程序程序 :helloworld2: class helloworld3: .8: 第第 2,3,8 行:行: 类类在在c#或其他面向对象语言中,需要编写类或其他面向对象语言中,需要编写类使用关键字使用关键字class定义一个类,类的内容放在一对定义一个类,类的内容放在一对 中中示例中定义了一个名为示例中定义了一个名为helloworld的类的类第一个第一个 c# 程序程序 :helloworld4: static void main( )5: .7: 第第 4,5,7 行:行:main 方法方法 main 方法是应用程序的入口点,编译器
22、将由该处开始执行方法是应用程序的入口点,编译器将由该处开始执行程序程序 方法体也放在一对方法体也放在一对 中中 每个每个c#的应用程序都必须包含的应用程序都必须包含main方法方法4: static void main( )5: .7: 第第 4,5,7 行:行:main方法方法 static表示表示main方法是一个全局方法方法是一个全局方法 void表示表示main方法没有任何返回值,即返回值是空方法没有任何返回值,即返回值是空 参数放在小括号中定义。此处括号内没有内容,表明参数放在小括号中定义。此处括号内没有内容,表明main方法方法没有任何参数没有任何参数第一个第一个 c# 程序程序
23、:helloworld6: console.writeline(“hello, world!”);第第 6 行:行: 语句语句 在在c#中要执行的指令中要执行的指令 语句之间用;分隔,编译器通过分号来区分多个语句语句之间用;分隔,编译器通过分号来区分多个语句 使用大括号使用大括号 标识某个代码块的开始和结束,从而可以对语标识某个代码块的开始和结束,从而可以对语句进行组合。大括号必须成对匹配。句进行组合。大括号必须成对匹配。第一个第一个 c# 程序程序 :helloworld6: console.writeline(“hello, world!”);第第 6 行:行: 语句语句 hellowor
24、ld程序的主要目的就是在屏幕上显示一条问候程序的主要目的就是在屏幕上显示一条问候 writeline方法用来将问候语写到标准输出设备上。方法用来将问候语写到标准输出设备上。 console代表标准输出设备代表标准输出设备- 屏幕,它属于屏幕,它属于system命名空间命名空间 writeline方法是方法是console类的方法。访问类或对象的方法使用类的方法。访问类或对象的方法使用 点取符点取符.来完成。来完成。 字符串用双引号字符串用双引号“ ”表示表示 字符串字符串“hello,world”是是writeline方法的参数,表示屏幕输出方法的参数,表示屏幕输出 的内容的内容第一个第一个
25、c# 程序程序 :helloworld系统预定义类型系统预定义类型类型类型描描 述述范围范围/精度精度例子例子object所有其它类型的最根本的基所有其它类型的最根本的基础类型础类型object o = null;string字符串类型,一个字符串是字符串类型,一个字符串是一个一个unicode字符序列字符序列string s= hello;sbyte8-bit 有符号整数类型有符号整数类型128.127sbyte val = 12;short16-bit有符号整数类型有符号整数类型32,768.32,767short val = 12;int32-bit有符号整数类型有符号整数类型2,147
26、,483,648.2,147,483,647int val = 12;long64-bit有符号整数类型有符号整数类型9,223,372,036,854,775,808.9,223,372,036,854,775,807long val1 = 12;long val2 = 34l;byte8-bit无符号整数类型无符号整数类型0.255byte val1 = 12;byte val2 = 34u;ushort16-bit无符号整数类型无符号整数类型0.65,535ushort val1 = 12;ushort val2 = 34u;uint32-bit无符号整数类型无符号整数类型0.4,294
27、,967,295uint val1 = 12;uint val2 = 34u;系统预定义类型系统预定义类型类型类型描描 述述范围范围/精度精度例子例子ulong64-bit无符号整数类型无符号整数类型0.18,446,744,073,709,551,615ulong val1 = 12;ulong val2 = 34u;ulong val3 = 56l;ulong val4 = 78ul;float单精度浮点数类型单精度浮点数类型1.5 1045 至至 3.4 1038,7 位精度位精度float val = 1.23f;double双精度浮点数类型双精度浮点数类型5.0 10324 至至 1
28、.7 10308,15 位精度位精度double val1 = 1.23;double val2 = 4.56d;bool布尔类型类型布尔类型类型; 一个布尔类型数据一个布尔类型数据不是真就是假不是真就是假true,falsebool val1 = true;bool val2 = false;char字符类型字符类型; 一个字符数据是一个一个字符数据是一个unicode字符字符char val = h;decimal精确十进制类型,有精确十进制类型,有28个有效位个有效位1.0 1028 至至 7.9 1028,28 位精度位精度decimal val = 1.23m;字面量字面量类型类别后
29、缀示例/允许的值bool布尔布尔无无true或或falseint整数整数无无int x = 100uint,ulog整数整数u或或uuint x = 1000ulong,ulong长整型长整型l或或llong x = 100000lulong无符号长整型无符号长整型ul,ul,ul,ul,lu,lu,lu或或luulong x = 4324ulfloat单精度浮点数类型单精度浮点数类型f或或ffloat x = 34.76fdouble双精度浮点数类型双精度浮点数类型d或或ddouble x = 763.7245ddecimal精确十进制类型精确十进制类型m或或mdecimal x = 1.5
30、44mchar字符字符无无char x = astring字符串字符串无无string =”abc” int:int imax = int.maxvalue;int pval = int.parse(“100”);short i16 = 50;int i32 = i16;i16 = i32; 错误错误i16 = (short)i32; decimaldecimal irate = 3.9834m;irate = decimal.round(irate, 2); /四舍五入四舍五入irate = decimal.remainder(512.0m, 51.0m); boolbool bt = (b
31、ool)1; /错误错误 charstring 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 = char.isletterordigit(pattern, 3); single,doublefloat f = 24567.66f;double d = 124.45;if(single.isnan(1/0) 使用使用pars
32、e转换数字字符串转换数字字符串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 dparse=double.parse(“99.99);字符串字符串 字符串直接量字符串直接量string path;path = ”c:note.txt”;path = “c:note.txt”; 字符串操作字符串操作索引字
33、符串中的单个字符索引字符串中的单个字符string str = “abcd”;char c = str0;字符串连接字符串连接string s1 = “my age = “;int myage = 28;string cat = s1 + myage; 字符串操作字符串操作抽取和定位子串抽取和定位子串string poem = “in xanadu did kubla khan”;string poem = “in xanadu did kubla khan”;string poemseg = poem.substring(10);string poemseg = poem.substring
34、(10);poemseg = poem.substring(0,9);poemseg = poem.substring(0,9);int index = poem.indexof(“i”);int index = poem.indexof(“i”);index = poem.lastindexof(“n”);index = poem.lastindexof(“n”);比较字符串比较字符串bool ismatch;bool ismatch;string title = ancient mariner;ismatch = (title = ancient amriner);ismatch = (t
35、itle.toupper() = ancient mariner);ismatch = title.equals(ancient mariner);stringstring常用方法常用方法c# 中常用的字符串处理方法:中常用的字符串处理方法:equals() :比较两个字符串的值是否相等:比较两个字符串的值是否相等tolower():将字符串转换成小写形式:将字符串转换成小写形式indexof():查找某个字符在字符串中的位置:查找某个字符在字符串中的位置substring():从字符串中截取子字符串:从字符串中截取子字符串join():连接字符串:连接字符串split():分割字符串:分割字
36、符串trim():去掉字符串两边的空格:去掉字符串两边的空格实例实例 将一文件名的扩展名改为将一文件名的扩展名改为.dat。例:。例:1.txt改为改为1.datusing system;using system.collections.generic;using system.linq;using system.text;namespace _011 class program static void main(string args) string filename = 1.2.txt; int indexdot = filename.lastindexof(.); string exte
37、ndname = dat; filename = filename.substring(0, indexdot+1); filename += extendname; console.writeline(filename); string string 常用方法应用常用方法应用1 1 已有如下代码,按要求增加功能:已有如下代码,按要求增加功能:static void main(string args) string email; / 电子邮件地址电子邮件地址 console.writeline(请输入你的邮箱请输入你的邮箱:); email = console.readline(); cons
38、ole.writeline(你的邮箱是你的邮箱是 0, email); 需实现的功能:需实现的功能:1、 输入输入 yes 时,程序循环执行时,程序循环执行2、 兼容以下各种形式兼容以下各种形式 yes(yes、yes、 yes .)3、 提取邮箱的用户名提取邮箱的用户名using system;using system.collections.generic;using system.linq;using system.text;namespace _011 class program static void main(string args) while(1) string email;
39、/ 电子邮件地址 console.writeline(请输入你的邮箱:); email = console.readline(); console.writeline(你的邮箱是 0, email); console.writeline(继续输入邮箱吗?); string input = console.readline(); if (input.toupper() = yes) continue; else break; while (true)string string 常用方法应用常用方法应用2 2输入一个字符串,输出每个单词,重新用下划线输入一个字符串,输出每个单词,重新用下划线连接输
40、出连接输出 使用使用 split() 方法分割字符串方法分割字符串 使用使用 join() 方法连接字符串方法连接字符串split()方法方法分割字符串分割字符串代码分析代码分析splitstrings = inputstring.split( );/ 将分割后的字符串使用下划线连接在一起将分割后的字符串使用下划线连接在一起joinstring = string.join(_, splitstrings); 返回值为返回值为字符串数组字符串数组字符串变量名字符串变量名参数:分隔符(参数:分隔符(char型)型)返回字符串返回字符串静态方法静态方法参数参数1:连接符:连接符参数参数2:字符串数组
41、:字符串数组 关键代码:关键代码:join()方法方法连接字符串连接字符串using 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(joinst
42、ring); 如果字符串两边有空格?如果字符串两边有空格?format() format() 方法方法 两种输出字符串的方式:两种输出字符串的方式:string name = 李四李四;console.writeline(my name is + name + ,i am + 18);string name = 李四李四;console.writeline(my name is 0 ,i am 1 , name,18);格式字符串格式字符串变量列表变量列表stringstring类的类的format()format()方法用来格式化字符串方法用来格式化字符串 关键代码:关键代码:record
43、= string.format( 姓名姓名:0n出生年月出生年月:1n身高身高:2n 血型血型:3n星座星座:4n最喜欢的食物最喜欢的食物:5, name, birthday, height, bloodtype, planet, favourfood);console.writeline(n这是你的个人档案这是你的个人档案:);console.writeline(record);参数与参数与 writline() 方法相似方法相似format() format() 的语法小结的语法小结string mystring = string.format(格式字符串格式字符串, 参数列表参数列表);
44、string mystring = string.format (0 乘以乘以 1 等于等于 2 , 2, 3, 2*3);格式字符串格式字符串代表代表参数列表参数列表2乘以乘以3等于等于6包括占位符包括占位符x小结小结 补充补充下划线处的下划线处的占位符占位符,输出五个成语,输出五个成语string yi = 一一;string er = 二二;string san = 三三;string word = string.format( 独独 _ 无无 _,_ 心心 _ 意意,垂涎垂涎 _ 尺尺,略知略知 _ _,举举_ 反反 _, yi, er, san);console.writeline(
45、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);枚举枚举qaccess modifiers enum :enum_base enum bodyclass myappenum fabric : int cotton = 1, silk = 2, wool = 4static void main() fabric fab = fabric.
46、cotton; int fabnum = (int) fab; string fabtype = fab.tostring(); console.writeline(fab);整型,默认为整型,默认为int默认为默认为internal枚举和位标志枚举和位标志namespace myhelloapp class myapp flags enum fabric cotton = 1, silk = 2 static void main() fabric fab1 = (fabric)3; console.writeline(fab1.tostring(); system.enumsystem.en
47、um的方法的方法using system;namespace app1 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); 变量变量static void main(st
48、ring args)/ 声明布尔型、字符串型、整型、短整型和浮点型变量 bool t = false;short n1 = 30;int n2 = 1200;string str = jeny;float n3 = 23.1f;/ 显示变量值 console.writeline (布尔值 = + t);console.writeline (短整型值 = + n1);console.writeline (整型值 = + n2);console.writeline (字符串值 = + str);console.writeline (浮点值 = + n3);变量中存储的值取决于该变量的类型常量常量s
49、tatic void main(string args)/ pi常量piconst float _pi = 3.1415169f;/ 由地球引力引起的加速度常量,单位为 cm/s*s const float _gravity = 980;/ 钟摆的长度 int length = 60;/ 钟摆的周期 double period = 0;/ 钟摆周期的计算公式 period = 2 * _pi * math.sqrt(length / _gravity);console.writeline (钟摆的周期为 0 秒, period);声明常量在表达式中使用常量const 关键字用于声明常量数组数组
50、 数组是同一数据类型的一组值数组是同一数据类型的一组值 数组属于引用类型,因此存储在堆内存中数组属于引用类型,因此存储在堆内存中 数组元素初始化或给数组元素赋值都可以在声数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行明数组时或在程序的后面阶段中进行 语法语法: : 数据类型数据类型, 数组名称数组名称 = new 类型类型 n,; int arrayhere = new int 6;数组数组static void main(string args)int count;console.writeline(“请输入准备登机的乘客人数 );count=int.parse(c
51、onsole.readline();/ 声明一个存放姓名的字符串数组,其长度等于乘客人数 string names = new stringcount;/ 用一个 for 循环来接受姓名 for(int i=0; i检查一个数是否大于检查一个数是否大于另一个数另一个数 操作数操作数1 操作数操作数2检查一个数是否小于检查一个数是否小于另一个数另一个数 操作数操作数1 =检查一个数是否大于检查一个数是否大于或等于另一个数或等于另一个数 操作数操作数1 = 操作数操作数2= 检查一个数是否小于检查一个数是否小于或等于另一个数或等于另一个数 操作数操作数1 = 操作数操作数2= 检查两个值是否相等检
52、查两个值是否相等 操作数操作数1 = 操作数操作数2!= 检查两个值是否不相检查两个值是否不相等等操作数操作数1 != 操作数操作数2运算符和表达式运算符和表达式类别类别运算符运算符说明说明表达式表达式成员访问运算符成员访问运算符.用于访问数据结构的成员用于访问数据结构的成员 数据结构数据结构.成员成员赋值运算符赋值运算符=给变量赋值给变量赋值 操作数操作数1 = 操作数操作数2逻辑运算符逻辑运算符 & 对两个表达式执行逻辑对两个表达式执行逻辑“与与”运算运算 操作数操作数1 & 操作数操作数2|对两个表达式执行逻辑对两个表达式执行逻辑“或或”运算运算 操作数操作数1 | 操作
53、数操作数2!对两个表达式执行逻辑对两个表达式执行逻辑“非非”运算运算! 操作数操作数( ) 将操作数强制转换为给定将操作数强制转换为给定的数据类型的数据类型 (数据类型数据类型) 操作数操作数运算符和表达式运算符和表达式 9 9-6-6赋值运算符赋值运算符 (=)变量 = 表达式;例如:身高 = 177.5;体重 = 78;性别 = “m”;运算符和表达式运算符和表达式 9 9-7-7一元运算符一元运算符 (+/-)variable +; 相当于相当于 variable = variable + 1;variable -; 相当于相当于 variable = variable - 1;运算符和
54、表达式运算符和表达式运算符运算符计算方法计算方法表达式表达式求值求值结果(设结果(设 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运算符和表达式运算符和表达式c# 运算符的优先级运算符的优先级优先级优先级说明说明运算
55、符运算符结合性结合性1括号括号( )从左到右从左到右2自加自加/ /自减运算符自减运算符+/-从右到左从右到左3乘法运算符乘法运算符除法运算符除法运算符取模运算符取模运算符*/%从左到右从左到右4加法运算符加法运算符减法运算符减法运算符+-从左到右从左到右5小于小于小于等于小于等于大于大于大于等于大于等于=从左到右从左到右6等于等于不等于不等于=!=从左到右从左到右从左到右从左到右7逻辑与逻辑与&从左到右从左到右8逻辑或逻辑或|从左到右从左到右9赋值运算符和快捷运赋值运算符和快捷运算符算符= += *= /= %= -=从右到左从右到左选择结构选择结构语法:语法: if () else
56、 q选择结构用于根据表达式的值执行语句if else条件:只能是条件:只能是bool类型的值类型的值 选择结构选择结构switch (“cotton”)case “cotton”: case “cotton”: break;case 值3: case 值4: break;switchcase 表达式可以是表达式可以是int、字符或字、字符或字符串符串c#不允许从一个不允许从一个case块继块继续执行到下一个续执行到下一个case块。每块。每个个case块必须以一个跳转控块必须以一个跳转控制语句制语句break、goto或或return结束结束多个多个case标签可以对应一个标签可以对应一个代码
57、块代码块循环结构循环结构 循环结构用于对一组命令执行一定的次数或反循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真。复执行一组命令,直到指定的条件为真。 循环结构的类型循环结构的类型 w while 循环循环d do 循环循环f for 循环循环foreach 循环循环条件:只能是条件:只能是bool类型的值类型的值 w while 循环反复执行指定的语句,直到指定的条循环反复执行指定的语句,直到指定的条件为真件为真 语法语法 : :while (条件条件) / 语句语句 break 语句可用于退出循环语句可用于退出循环 continue 语句可用于语句可用于跳过当前
58、循环并开始下一循跳过当前循环并开始下一循环环 while while 循环循环dowhile dowhile 循环循环dowhile 循环与循环与 while 循环类似,二者区循环类似,二者区别在于别在于 dowhile dowhile 循环中即使条件为假时也循环中即使条件为假时也至少执行一次该循环体中的语句。至少执行一次该循环体中的语句。 语法语法 : : do / 语句语句 while (条件条件) for for 循环循环 for for 循环要求只有在对特定条件进行判断后才允循环要求只有在对特定条件进行判断后才允许执行循环许执行循环 这种循环用于将某个语句或语句块重复执行预定这种循环用
59、于将某个语句或语句块重复执行预定次数的情形次数的情形 语法语法 : :for ( (初始值初始值; ; 条件条件; 增增/减减) /语句语句foreach foreach 循环循环 2-1 2-1 foreach 循环用于遍历整个集合或数组 语法: foreach (数据类型数据类型 元素元素( (变量变量) ) in 集合或者数组集合或者数组) /语句语句 foreach foreach 循环循环2-22-2static void main(string args)/ 存放字母的个数存放字母的个数 int letters = 0;/ 存放数字的个数存放数字的个数int digits = 0;
60、/ 存放标点符号的个数存放标点符号的个数int punctuations = 0;/ 用户提供的输入用户提供的输入 string instr;console.writeline(请输入一个字符串请输入一个字符串 );instr = console.readline();/ 声明声明 foreach 循环以遍历输入的字符串中的每个字符。循环以遍历输入的字符串中的每个字符。 foreach(char ch in instr) / 检查字母检查字母if(char.isletter(ch) letters+;/ 检查数字检查数字if(char.isdigit(ch) digits+;/ 检查标点符号检查标点符号if(char.ispun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年财务分析 测试题及答案
- 2026年探路综合版测试题及答案
- 2026年心里健康测试题目及答案
- 2026年婴儿脑力测试题及答案
- 2026年心理暗示的测试题及答案
- 2026年女性间谍测试题及答案
- 2026学年福建省长乐市一年级语文期末通关快速提分卷(详细参考解析)详细答案和解析
- 2026学年黑龙江省鸡西市二年级语文期末通关重点试卷(详细参考解析)详细答案和解析
- 微波理疗考试题库及答案
- Unit 1 Helping at home单元分层练 (2)2026-2027学年人教PEP版四年级上册英语
- 原材料入厂质量检验标准规范
- 滴滴人证考试题库及答案
- 小儿氧气吸入法课件
- 再生资源试题及答案
- 人工智能辅助的麻醉决策支持系统开发-洞察及研究
- 口腔黏膜病病人的护理措施
- CNC现场5S标准培训
- 2025年河北省中考化学试卷真题(含答案解析)
- 山东卷2025年高考化学真题
- 大众集团供应商全生命周期管理策略
- 住房泡水赔偿协议书
评论
0/150
提交评论