第2讲 C#程序编程基础

更新时间:2023-03-08 10:03:59 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《动态网站交互技术》教学单元设计方案

课程编号:50312003 编制时间:2009.7 编制人: 教学单元编号 所属学习情境 名称编号 1.2 教学单元名称 C#程序编程基础 学时数 6 创建站点和制作简单动态网页 1、能够定义变量、能够书写表达式 教学目标 主要能力指标 2、能够使用IF分支语句和for循环语句 3、能够使用简单的字符串函数 4、能够编写简单的C#程序 相关能力指标 1、与人合作能力 2、解决问题能力 3、自我学习能力 教学单元的难点: 1、C#流程控制语句 2、常用数据类型的用法(函数的使用) 教学单元的重点: 1、变量、运算符和表达式 2、C#流程控制语句 3、常用数据类型的用法(函数的使用) 教师讲授的主要内容: 1、C#应用程序的一般结构 2、C#代码编写命名规范 3、数据类型、变量与常量、运算符与表达式 4、C#流程控制语句(分支语句、循环语句、异常处理语句) 5、常用数据类型的用法(函数的使用) 学生自主学习的主要内容: 1、C#语言及其发展介绍 2、断点设置与程序调试 3、数组 4、类和方法 教学单元的教学微观设计 本单元首先介绍C#应用程序的一般结构;然后讲#代码编写命名规范,数据类型、变具体的教学 安排 量与常量、运算符与表达式。接着讲C#流程控制语句(分支语句、循环语句、异常处理语句),因授课时间限制的原因,分支语句只讲if语句,switch语句留到后续课程制作网页用到时在讲。循环语句也一样,只讲for循环语句,其它的后续课程用到时在讲。最后讲常用数据类型的用法,也就是各种数据类型的相关函数的使用。 学习任务 教学载体 教学方法 教学手段 学习成果 C#程序编程 简单动态网页制作 讲授 多媒体演示 1、提交课内作业 教师: 1、学生是否理解变量和各种数据类型。 2、学生是否会书写表达式。 3、学生是否理解和能够使用各种流程控制语句 4、学生是否掌握各种数据类型的相关函数的使用 学生: 效果评估 1、能否使用各种流程控制语句编写简单的程序 2、是否理解和掌握各种数据类型的相关函数的使用 实施评估: 1、理解变量和各种数据类型,能够书写表达式。30% 2、能够编写简单的C#程序 。40% 3、能够理解和掌握常用的各种数据类型的相关函数 20%。

主要教学内容

在第一讲了解了ASP.NET 3.5的一些基本知识,不过如果要深入到ASP.NET 3.5应用程序开发,需要对开发语言有更加深入的了解。而在.NET平台上,微软主推的编程语言就是C#,本章将会从C#的语法、结构和特性来讲解,以便大家能够深入的了解C#程序设计。

1、 C#程序的结构

在开始学习和编写C#代码之前,首先应该了解C#编程语言的结构,下列代码说明了C#应用程序的基本结构。

using System;

using System.Collections.Generic; using System.Linq; using System.Text; namespace mycsharp {

class Program {

static void Main(string[] args) {

Console.WriteLine(\ Console.ReadKey(); } } }

的所有类也是一样。

//使用命名空间 //程序代码命名空间 //应用程序主类 //入口方法 //输出Hello World //等待用户输入

注意:在一个类内的所有方法都是独立的方法,所以每个大括号后面都不需要分号,同样对于命名空间里

2、 C# 的代码设置

代码格式也是程序设计中一个非常重要的组成环节,他可以帮助用户组织代码和改进代码,也让代码具有可读性。具有良好可读性的代码能够让更多的开发人员更加轻松的了解和认知代码。按照约定的格式书写代码是一个非常良好的习惯,下面的代码示例说明了应用缩进、大小写敏感、空白区和注释等格式的原则。

using System;

using System.Collections.Generic; using System.Linq; //使用LINQ命名空间 using System.Text; namespace mycsharp //声明命名空间 {

class Program //主程序类 {

static void Main(string[] args) //静态方法 {

Console.WriteLine(\ //这里输出Hello World Console.WriteLine(\按任意键退出..\ //这里让用户按键后退出,保持等待状态

} } } 1.缩进

缩进可以帮助开发人员阅读代码,同样能够给开发人员带来层次感。 2.大小写敏感

C#是一种对大小写敏感的编程语言。在C#中,其语法规则的确是对字符串中字母的大小写敏感的,例如“C Sharp”、“c Sharp”、“c sHaRp”都是不同的字符串,在编程中应当注意。

3.空白

C#编译器会忽略到空白。使用空白能够改善代码的格式,提高代码的可读性。但是值得注意的是,编译器不对引号内的任何空白做忽略,在引号内的空格作为字符串存在。

4.注释

注释能够方便开发人员的阅读代码。良好的注释习惯能够让代码更加优雅和可读。

注释的写法是以符号“/*”开始,并以符号“*/”结束,这样能够让开发人员更加轻松的了解代码的作用,同时,也可以使用符号“//”双斜线来写注释,但是这样的注释是单行的,示例代码如下所示。

5.布局风格

3、 变量

在任何编程语言中,无论是传统的面向过程还是面向对象都必须使用变量。因此,变量都有自己的数据类型,在使用变量的时候,必须使用相同的数据类型进行运算。在程序的运行中,计算中临时存储的数据都

必须用到变量,变量的值也会放置在内存当中,由计算机运算后再保存到变量中,由此可见,变量在任何的应用程序开发中都是非常基础也是非常重要的。同样,在C#中也需要变量对数据进行存储,本节将会介绍C#的基本语法、数据类型、变量等。 3.1 定义

要声明一个变量就需要为这个变量找到一个数据类型,在C#中,数据类型由.NET Framework和C#语言来决定,表2-1列举了一些预定义的数据类型。

表2-1 预定义数据类型

预定义类型 short int bool float decimal object string -32768~32767之间的整数 -2147483648~2147483647之间的整数 布尔值,true of false 单精度浮点值 精确的十进制值,有28个有效单位 其他所有类型的基类 任意长度的Unicode字符序列 定义 字节数 2 4 1 4 12 N/A N/A 一个简单的声明变量的代码如下所示: int s;

//声明整型变量 //声明浮点型变量

float myfloat;

上述代码声明了一个整型的变量s,同时也声明了一个单精度浮点型变量myfloat。 3.2 值类型

这种类型的对象总是直接通过其值使用,不需要对它进行引用。基于值类型的变量直接包含值。并且,所有的C#局部变量都需要初始化后才可以使用,值类型同样如此,初始化代码如下所示。

int s; s = 3; int s; s = 3;

//声明整型变量 //声明整型变量 //初始化变量 //声明整型变量 //初始化变量

s = new int(); 上式等同于如下代码。

所有的值类型均隐式的派生自System.ValueType,并且值类型不能派生出新的类。值的类型不能为null,但是可空类型允许将null值赋给值类型,在上面的代码中,程序通过默认的构造函数给为变量s初始化并赋值。

3.3 引用类型

引用类型的变量又称为对象,是可存储对实际数据的引用。常见的引用类型有class、interface、delegate、object和string。多个引用变量可以附加于一个对象,而且某些引用可以不附加于任何对象,如果声明了一个引用类型的变量却不给他赋给任何对象,那么它的默认值就是null。相比之下,值类型的值不能为null。 3.4 变量规则

声明变量并不是随意声明的,变量的声明有自己的规则。在C#中,应用程序包含许多关键字,包括int等是不能够声明为变量名的,如int int是不允许的,在进行变量的声明和定义时,需要注意变量名称是否与现有的关键字重名。 3.5 命名规则和命名习惯

命名规则就是给变量取名的一种规则,一般来说,命名规则就是为了让开发人员给变量或者命名空间取个好名,不仅要好记,还要说明一些特性。在C#里面,有常用的一些命名的习惯如下。

? Pascal大小写形式:所有单词的第一个字母大写,其他字母小写。

? Camel大小写形式:除了第一个单词,所有单词的第一个字母大写,其他字母小写。

注意:标识符、参数名、函数名都不需要使用缩写。如果要使用缩写,超过两个字符以上的缩写都应该使用Camel大写格式。 3.6 声明并初始化变量

在程序代码编写中,需要大量的使用变量和读取变量的值,所以需要声明一个变量来表示一个值。这个变量可能描述是一个人的年龄,也可能是一辆车的颜色。在声明了一个变量之后,就必须给这个变量一个值,只有在给变量值之后能够说明这个变量被初始化。

1.语法

声明变量的语法非常简单,即在数据类型之后编写变量名,如一个人的年龄(age)和一辆车的颜色(color),声明代码如下所示。

int age; 色

上述代码声明了一个整型变量age和一个字符串型变量color,由于年龄的值不会小于0也不会大于100,所以在声明时可以使用数字类型进行声明。

2.初始化变量及赋值方式

变量在声明后还需要初始化,例如“我年龄21岁,很年轻,我想买一辆红色的车”,那么就需要对相应的变量进行初始化,示例代码如下所示。

int age; age = 21;

//声明一个叫age的整型变量,代表年龄 //声明一个叫color的字符串变量,代表颜色 //声明始化,年龄21岁

//声明一个叫age的整型变量,代表年龄 //声明一个叫color的字符串变量,代表颜

string color;

string color;

color = \ //声明始化,车的颜色为红色

上述代码也可以合并为一个步骤简化编程开发,示例代码如下所示。 int age=1;

//声明并初始化一个叫age的整型变量,代表年龄

//声明初始化

string color=\

4、 数组

数组是一个引用类型,开发人员能够声明数组并初始化数据进行相应的数组操作,数组是一种常用的数据存放方式。

1.数组的声明

数组的声明方法是在数据类型和变量名之间插入一组方括号,声明格式如下所示。 string[] groups;

//声明数组

以上语句声明了一个变量名为groups的数组,其数据类型为string。声明了一个数组之后,并没有为此数组添加内容初始化,需要对数组初始化,才能使用数组。

2.数组的初始化

开发人员可以对数组进行显式的初始化,以便能够填充数组中的数据,初始化代码如下所示。 string[] groups={\

//初始化数组

值得注意的是,与平常的逻辑不同的是,数组的开始并不是1,而是0。以上初始化了groups数组,所以groups[0]的值应该是“asp.net”而不是“c#”,相比之下,group[1]的值才应该是“c#”。

3..NET中数组的常用的属性和方法

在.NET中,.NET框架为开发人员提供了方便的方法来对数组进行运算,专注于逻辑处理的开发人员不需要手动实现对数组的操作。这些常用的方法如下所示。

? Length方法用来获取数组中元素的个数。

? Reverse方法用来反转数组中的元素,可以针对整个数组,或数组的一部分进行操作。 ? Clone方法用来复制一个数组。

对于数组的操作,可以使用相应的方法进行数据的遍历、查询和反转,示例代码看项目指导。

5、 声明并初始化字符串

字符串是计算机应用程序开发中常用的变量,在文本输出、字符串索引、字符串排序中都需要使用字符串。

1.声明及初始化字符串

字符串类型(string)是程序开发中最常见的数据类型,如上一小节声明的数组中的任意一个元素都是一个字符串。由于数组也是有其数据类型的,所以声明的数组是一个字符串型的数组。字符串的声明方式和其他的数据类型声明方式相同,字符串变量的值必须在“”双引号之间,示例代码如下所示。

string str=\ //声明字符串

6、 操作字符串

在C#中,为字符串提供了快捷和方便的操作,使用C#提供的类能够进行字符串的比较、字符串的连接、字符串的拆分等操作,方便了开发人员进行字符串的操作。

1.比较字符串

如果需要比较字符串,有两种方式,一种是值比较,一种是引用比较。值比较可以直接使用运算符“==”进行比较,示例代码如下所示。

string str = \ string str2 = \ if (str == str2) {

Console.WriteLine(\字符串相等\ } else {

Console.WriteLine(\字符串不相等\ } 2.连接字符串

当一个字符串被创建,对字符串的操作的方法实际上是对字符串对象的操作。其返回的也是新的字符串对象,与int等数据类型一样,字符串也可以使用符号“+”进行连接,代码如下所示。

string str = \ string str2 = \ Console.WriteLine(str+str2);

//声明字符串 //声明字符串 //连接字符串

//输出相等信息

//输出不相等信息

//声明字符串 //声明字符串

//使用“==”比较字符串

在上述例子中,声明并初始化两个字符串型变量str和str2,并输出str+str2的结果 3.拆分字符串 4.更改字符串大小写 5.常用的字符串操作

在C#软件开发过程,字符串是使用率最高的数据类型之一,开发人员往往需要对字符串进行大量的操作。这里介绍一些经常使用的字符串操作如判断字符串是否为空,替换字符串中相应的字符等等。判断字符串是否为空会经常在程序中使用,以保证用户输入的完整性,示例代码如下所示。

string str = \//声明字符串 if (String.IsNullOrEmpty(str)) {

Console.WriteLine(\字符串为空\ }

//输出字符串为空的信息

//使用String类的静态方法

else {

Console.WriteLine(\字符串不为空\ }

大多数应用程序都是对字符串进行操作,这里简单的常用的字符串的操作,熟练掌握字符串的操作对应用程序开发有很大的好处。

//输出字符串不为空的信息

7、 创建和使用常量

常量是一般在程序开发当中不经常更改的变量,如π值、税率或者是数组的长度等。使用常量一般能够让代码更具可读性、更加健壮、便于维护。在程序开发当中,好的常量使用技巧对程序开发和维护都有好的影响,示例代码如下所示。

const double pi=3.1415926; {

double r=2;

//声明double类型常量

//使用常量 //输出变量值 //等待用户输入

double round = 2 * pi * r * r; Console.ReadKey(); }

上述代码非常简单,就是计算一个圆的圆周率。当代码非常长的时候,程序也会非常干练,容易阅读,如果在程序中出现了以下代码,也能够理解该表达式的作用。示例代码如以下所示。

double Perimeter = 2 * pi * r;

//使用常量

//常量pi,π //程序入口方法

static void Main(string[] args)

Console.WriteLine(round.ToString());

使用const声明的变量能够在程序中使用,但是值得注意的是,使用const声明的变量不能够在后面的代码中对该变量进行重新赋值。

注意:使用const声明的变量如果在后面的代码中进行重新赋值或更改,则编译器会提示错误。const修饰符通常用于不常更改的变量的修饰。

8、 类型转换

在应用程序开发当中,很多的情况都需要对数据类型进行转换,以保证程序的正常运行。类型转换是数据类型和数据类型之间的转换,在.NET中,存在着大量的类型转换,常见的类型转换代码如下所示。

int i = 1;

//声明整型变量 //隐式转换输出

Console.WriteLine(i);

在上述代码中i是整型变量而WriteLine方法的参数是Object类型,但是WriteLine方法依旧能够正确输出是因为系统将i的类型在输出的时候转换成了字符型。在.NET框架中,有隐式转换和显式转换,隐式转换是一种由CLR自动执行的类型转换,如上述代码中的,就是一种隐式的转换(开发人员不明确指定的转换),该转换由CLR自动的将int类型转换成了string型。在.NET中,CLR支持许多数据类型的隐式转换,CLR支持的类型转换列表如表2-5所示。

表2-5 CLR支持的转换列表

从该类型 short int long,ulong float char 到该类型 int,long,float,double,decimal long,float,double,decimal float,double,decimal double ushort,int,uint,long,ulong,float,double,decimal

显式转换是一种明确要求编译器执行的类型转换。在程序开发过程中,虽然很多地方能够使用隐式转换,但是隐式转换有可能存在风险,显式转换能够通过程序捕捉进行错误提示。虽然隐式也会提示错误,但是显式转换能够让开发人员更加清楚的了解代码中存在的风险并自定义错误提示以保证任何风险都能够及早避免,示例代码如下所示。

int i = 1;

//声明整型变量i //显式转换为浮点型

float j = (float)i;

注意:显式的转换可能导致数据的部分丢失,如3.1415转换为整型的时候会变成3。

除了隐式的转换和显式的转换,还可以使用.NET中的Convert类来实现转换,即使是两种没有联系的类型也可以实现转换。Convert类的成员函数都是静态方法,当调用Convert类的方法时无需创建Convert对象,当使用显式的转换的时候,若代码如下所示,则编译器会报错。

string i = \ int j = (int)i;

//声明字符串变量 //显式转换为整型 //隐式转换为字符串

Console.WriteLine(j); 量的值都能随意转换,示例代码如下所示。

string i = \

但是明显的是,字符串变量i的值是有可能转换成整型变量值1的。但是值得注意的是,并不是每个变

//声明字符串变量 //错误的转换

int j = Convert.ToInt32(i);

上述代码中,i的值是字符串“haha”,很明显,该字符串是无法转换为整型变量的。运行此代码后系统会抛出异常提示字符串“haha”不能够转换成整型常量。

9、 编写表达式

在了解了C#中的数据类型、变量的声明和初始化方式、以及类型转换等基本知识,就需要了解如何进行表达式的编写。表达式在C#应用程序开发中非常的重要,本节将说明如何使用运算符创建和使用表达式。 9.1 表达式和运算符

表达式和运算符是应用程序开发中最基本也是最重要的一个部分,表达式和运算符组成一个基本语句,语句和语句之间组成函数或变量,这些函数或变量通过某种组合形成类。

1.定义

表达式是运算符和操作符的序列。运算符是个简明的符号,包括实际中的加减乘除,它告诉编译器在语句中实际发生的操作,而操作数既操作执行的对象。运算符和操作数组成完整的表达式。

2.运算符类型

在大部分情况下,对运算符类型的分类都是根据运算符所使用的操作数的个数来分类的,一般可以分为三类,这三类分别如下所示。

? 一元运算符:只使用一个操作数,如(!),自增运算符(++)等等,如i++。 ? 二元运算符:使用两个操作数,如最常用的加减法,i+j。 ? 三元运算符:三元运算符只有(?:)一个。

除了按操作数个数来分以外,运算符还可以按照操作数执行的操作类型来分,如下所示。 ? 关系运算符。 ? 算术运算符。 ? 赋值运算符。 ? 条件运算符。 ? 其他运算符。

在应用程序开发中,运算符是最基本也是最常用的,它表示着一个表达式是如何进行运算的。常用的运算符如表2-6所示。

表2-6 常用的运算符

运算符类型 算术运算符 关系运算符 条件运算符 赋值运算符 运算符 +,-,*,/,% <,>,<=,>=,is,as &&,||,? =,+=,-=,*=,/=,<<=,>>=,&=,^=,|= 正如表2-5中所示,C#编程中所需要使用到的运算符都能够通过相应的类别进行相应的分类,但其分类的标准并不是唯一的。

3.算术运算符

程序开发中常常需要使用算术运算符,算术运算符用于创建和执行数学表达式,以实现加、减、乘、除等基本操作,示例代码如下所示。

int a = 1;

//声明整型变量 //使用+运算符 //使用-运算符

int c = a + b; int f = b - a; 4.关系运算符

关系运算符用于创建一个表达式,该表达式用来比较两个对象并返回布尔值。示例代码如下所示。 string a=\ string b=\

//声明字符串变量a //声明字符串变量b

if (a == b) {

//使用比较运算符 //输出比较相等信息

Console.WriteLine(\相等\ } else {

Console.WriteLine(\不相等\ }

//输出比较不相等信息

关系运算符如“>”,“<”,“>=”,“<=”等同样是比较两个对象并返回布尔值。

技巧:在使用判断的时候,可以直接使用表达式,只要表达式的返回值是布尔型的即可,同样也可以使用类型转换Convert.ToBoolean方法转换。

初学者很容易错误的使用关系运算符中的“==”号,因为初学者通常会将等于运算符编写为“=”号,示例代码如下所示。

if (a = b)

//使用布尔值布尔值

在这里,“=”号不等于“==”号,“=”号的意义是给一个变量赋值,而“==”号是比较两个变量的值是否相等,如果写成上述代码,虽然编译器不会报错,但是其运行过程就不是开发人员想象的流程。

5.逻辑运算符

逻辑运算符和布尔类型组成逻辑表达式。NOT运算符“!”使用单个操作数,用于转换布尔值,即取非,示例代码如下所示。

bool myBool = true;

//创建布尔变量 //使用逻辑运算符

bool notTrue = !myBool; 则返回false,示例代码如下所示。

bool myBool = true;

C#使用AND运算符“&&”。该运算符使用两个操作数做与运算,当有一个操作数的布尔值为false时,

//创建布尔变量 //使用逻辑运算符取反 //使用逻辑运算符计算

bool notTrue = !myBool;

bool result = myBool && notTrue;

同样,C#中也使用“||”运算符来执行OR运算,当有一个操作数的布尔值为true时,则返回true。

7.赋值运算符

C#提供了几种类型的赋值运算符,最常见的就是“=”运算符。C#还提供了组合运算符,如“+=”、“-=”、“*=”等。“=”运算符通常用来赋值,示例代码如下。

int a,b,c;

//声明三个整型变量 //使用赋值运算符

a = b = c = 1;

上述代码声明并初始化3个整型变量a、b、c并初始化值这些变量的值为1。加法赋值运算符“+=”将加法和赋值操作组合起来,先把第一个数值的值加上第二个数值的值再存放到第一个数值的,示例代码如下所示。

a += 1;

//进行自加运算

上述代码会将变量a的值加上1并再次赋值回a,上述代码实现的功能和以下代码等效。 a = a + 1; 9.2 运算符的优先级

开发人员需要经常创建表达式来执行应用程序的计算,简单的有加减法,复杂的有矩阵、数据结构等,在创建表达式时,往往需要一个或多个运算符。在多个运算符之间的运算操作时,编译器会按照运算符的优先级来控制表达式的运算顺序,然后再计算求值。例如在生活中也常常遇到这样的计算,如1+2*3。如果在程序开发中,编译器优先运算“+”运算符并进行计算就会造成错误的结果。

1.运算顺序

表达式中常用的运算符的运算顺序如表2-7所示。 表2-7 运算符优先级

运算符类型 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 运算符 *,/,% <,>,<=,>=,is,as &,^,| &&,||,? =,+=,-=,*=,/=,<<=,>>=,&=,^=,|= //不使用+=运算符

10、 使用条件语句

程序开发中,开发人员经常遇到选择性的问题,如用户是否注册。如果用户已经注册则允许用户登陆,否则就跳转到注册页面。这个时候,就需要在程序中使用条件语句。if是最常用的条件语句,同时,if还包括if、if else、if else if等语句用于执行复杂的条件选择。 10.1 if语句的使用方法

if语句用于判断条件并按照相应的条件执行不同的代码块,if语句包括多种呈现形式,这些形式分别是if、if else、if else if。

1.声明if语句

if语句的语法如下所示。 if(布尔值) 程序语句

当布尔值为true,则会执行程序语句,当布尔值为false时,程序会跳过执行的语句执行,示例代码如下所示。

if (true) {

console.writeline(\ }

上述代码首先会判断if语句的条件,因为if语句的条件为true,所以if语句会执行大括号内的代码,程序运行会输出字符串true,如果将if内的条件改为false,那么程序将不会执行大括号内的代码,从而不会输出字符串true。

2.声明if else语句

if else语句的语法如下所示。

if(布尔值) 程序语句1 else 程序语句2

同样,当布尔值为true,则程序执行程序语句1,但当布尔值为false时,程序则执行程序语句2,示例代码如下所示。

if (true) {

console.writeline(\ } else {

console.writeline(\ }

上述代码中if语句的条件为true,所以if语句会执行第一个大括号中间的代码,而如果将true改为false,则if语句会执行第二个大括号中的代码。

3.声明if else if语句

当需要进行多个条件判断是,可以编写if else if语句执行更多条件操作,示例代码如下所示。 if (month == \ {

console.writeline(\ }

else if (month == \ {

console.writeline(\ }

else if (month == \ {

console.writeline(\

//输出spring

//判断month是否等于3

//输出summer

//判断month是否等于7

//输出winter

//判断month是否等于12

//当条件为假时执行语句

//如果条件不成立则执行

//当条件为真时执行语句

//使用if语句判断条件

//为true的代码块

//使用if语句

} else {

console.writeline(\ }

上述代码会判断相应的月份,如果月份等于12,就会执行相应的大括号中的代码,否则会继续进行判断,如果判断该月份即不是3月也不是7月,说明所有的条件都不复合,则会执行最后一段大括号中的代码。

10.2 switch选择语句的使用

switch语句根据某个传递的参数的值来选择执行的代码。在if语句中,if语句只能测试单个条件,如果需要测试多个条件,则需要书写冗长的代码。而switch语句能有效的避免冗长的代码并能测试多个条件。

1.声明switch选择语句 Switch语句的语法如下所示。 switch (参数的值) {

case 参数的对应值1: 操作1; break; case 参数的对应值2: 操作2; break; case 参数的对应值3: 操作3; break; }

从上述语法格式中可以看出switch的语法格式。在switch表达式之后跟一连串case标记相应的switch块。当参数的值为某个case对应的值的时候,switch语句就会执行对应的case的值后的操作,并以break结尾跳出switch语句。若没有对应的参数时,可以定义default条件,执行默认代码,示例代码如下所示。

int x; switch (x) {

case 0: Console.WriteLine(\ case 1: Console.WriteLine(\ case 2: Console.WriteLine(\ }

在上述代码中,当x等于0的时候,就会执行case 0的操作,就执行了Console.WriteLine(\。如果x等于1,语句就会执行case 1的操作。switch不仅能够通过数字进行判断,还能够通过字符进行判断。

2.使用break跳出语句

从上述代码中可以看出,每一个操作后面都使用了一个break语句。在C/C++中,程序员可以被允许不写break而贯穿整个switch语句,但是在C#中不以break结尾是错误的,并且编译器不会通过。因为C#的switch语句不支持贯穿操作,因为C#中是希望避免在应用程序的开发中出现这样的错误。

//x=0时执行 //x=1时执行 //x=2时执行

//switch语句

//输出默认情况

//当都不成立时执行

default:Console.WriteLine(“这是默认情况”);break;

注意:在C#中,可以使用goto语句模拟,继续执行下一个case或default。尽管在程序中可以这样做,但是会降低代码的可读性,所以不推荐使用goto语句。

注意:在switch语句中,default语句并不是必须的,但是编写default是可以为条件设置默认语句。

11、 使用循环语句

程序开发中,经常需要对某个代码块执行循环,使编译器能够重复执行某个代码块来完成计算。循环能够减少代码量,避免重复输入相同的代码行,也能够提高应用程序的可读性。常见的循环语句有for、while、do、for each。 11.1 for循环语句

for循环一般用于已知重复执行次数的循环,是程序开发中常用的循环条件之一,当for循环表达式中的条件为true时,就会一直循环代码块。因为循环的次数是在执行循环语句之前计算的,所以for循环又称作预测式循环。当表达式中的条件为false时,for循环会结束循环并跳出。for循环语法格式如下所示。

for(初始化表达式,条件表达式,迭代表达式) 循环语句

for循环的优点就是for循环的条件都位于同一位置,同样,循环的条件可以使用复杂的布尔表达式表示。for循环表达式包含三个部分,即初始化表达式、条件表达式和迭代表达式。当for循环执行时,将按照以下顺序执行。

? 在for循环开始时,首先运行初始化表达式。 ? 初始化表达式初始化后,则判断表达式条件。 ? 若表达式条件成立,则执行循环语句。 ? 循环语句执行完毕后,迭代表达式执行。

? 迭代表达式执行完毕后,再判断表达式条件并循环。

开发人员能够通过编写for循环语句进行代码块的重复,示例代码如下所示。 for (int i = 0; i < 100; i++) {

Console.WriteLine(i); }

技巧:for循环即可做增量操作也可以做减量操作,如可以写为for(int i=10;i>0;i--),说明for循环的结构非常灵活,同样for循环的条件,迭代表达式也不仅仅局限与此。 11.2 while循环语句

学生看项目指导书自学 11.3 foreach循环语句

学生看项目指导书自学

//输出i变量的值

//循环100次

12、 异常处理语句try-catch-finally

C#为处理程序执行期间可能出现的异常情况提供内置支持,这些异常由正常控制流之外的代码处理。常用的异常语句包括throw,try,catch等。try-catch-final语句能够使应用程序更加健壮。try-finally语句依旧会抛出异常,而try-catch-finally语句能够捕获异常并执行finally语句中的控制语句,try-catch-finally语句结构和很灵活,示例代码如下所示。

int x = 1; int y = 0; try {

x = x / y; }

catch (Exception ee) {

Console.WriteLine(\除数不能为空,具体错误信息如下所示\ Console.WriteLine(ee.ToString()); } finally {

Console.WriteLine(\系统已自动停止\ }

上述代码试图用一个整型变量除以一个值为0的整型变量,当异常发生时,catch捕获并抛出异常,捕获异常后,finally语句也被执行。运行结果如图2-27所示。

图2-27 try-catch-finally语句运行示例

//继续执行程序

//继续执行程序块

//抛出异常 //输出异常信息

//捕获异常信息

//进行除法计算

//声明整型变量x //声明整型变量y //尝试处理代码块

13、 小结

本讲介绍了C#语言的基本知识,包括变量、变量规则、表达式、条件语句、循环语句以及异常处理,本章主要讲解了:

? 变量:介绍了变量的概念、变量的声明以及初始化。 ? 变量规则:介绍了变量的命名、规则。 ? 表达式:介绍了表达式的创建和使用方法。

? 条件语句:介绍了if、if else、if else if、switch等条件语句的使用方法。 ? 循环语句:介绍了for,while、do while、foreach等循环语句的使用方法。 ? 异常处理:介绍了异常以及try-catch-finally语句的使用方法。

12、 异常处理语句try-catch-finally

C#为处理程序执行期间可能出现的异常情况提供内置支持,这些异常由正常控制流之外的代码处理。常用的异常语句包括throw,try,catch等。try-catch-final语句能够使应用程序更加健壮。try-finally语句依旧会抛出异常,而try-catch-finally语句能够捕获异常并执行finally语句中的控制语句,try-catch-finally语句结构和很灵活,示例代码如下所示。

int x = 1; int y = 0; try {

x = x / y; }

catch (Exception ee) {

Console.WriteLine(\除数不能为空,具体错误信息如下所示\ Console.WriteLine(ee.ToString()); } finally {

Console.WriteLine(\系统已自动停止\ }

上述代码试图用一个整型变量除以一个值为0的整型变量,当异常发生时,catch捕获并抛出异常,捕获异常后,finally语句也被执行。运行结果如图2-27所示。

图2-27 try-catch-finally语句运行示例

//继续执行程序

//继续执行程序块

//抛出异常 //输出异常信息

//捕获异常信息

//进行除法计算

//声明整型变量x //声明整型变量y //尝试处理代码块

13、 小结

本讲介绍了C#语言的基本知识,包括变量、变量规则、表达式、条件语句、循环语句以及异常处理,本章主要讲解了:

? 变量:介绍了变量的概念、变量的声明以及初始化。 ? 变量规则:介绍了变量的命名、规则。 ? 表达式:介绍了表达式的创建和使用方法。

? 条件语句:介绍了if、if else、if else if、switch等条件语句的使用方法。 ? 循环语句:介绍了for,while、do while、foreach等循环语句的使用方法。 ? 异常处理:介绍了异常以及try-catch-finally语句的使用方法。

本文来源:https://www.bwwdw.com/article/jmc3.html

Top