当前位置:首页 > C#基础知识点
注意case的值必须是常量表达式——不允许使用变量。
4.2、循环语句
C#提供了4种不同的循环机制(for、while、do...while和foreach),在满足某个条件之前,可以重复执行代码块。
1. for循环
C#的for循环提供的迭代循环机制是在执行下一次迭代前,测试是否满足某个条件,其语法如下:
for (initializer; condition; iterator) statement(s)
其中:
● initializer是指在执行第一次迭代前要计算的表达式(通常初始化为一个局部变量,作为循环计数器);
● condition是在每次迭代循环前要测试的表达式(它必须等于true,才能执行下一次迭代);
● iterator是每次迭代完要计算的表达式(通常是递增循环计数器)。当condition等于false时,迭代停止。
for循环是所谓的预测试循环,因为循环条件是在执行循环语句前计算的,如果循环条件为假,循环语句就根本不会执行。
for循环非常适合用于一个语句或语句块重复执行预定的次数。下面的例子就是使用for循环的典型用法,这段代码输出从0~99的整数: for (int i = 0; i < 100; i = i+1)
{
Console.WriteLine(i);
}
2. while循环
while循环与for循环一样,while也是一个预测试的循环。其语法是类似的,但while循环只有一个表达式:
while(condition) statement(s);
与for循环不同的是,while循环最常用于下述情况:在循环开始前,不知道重复执行一个语句或语句块的次数。通常,在某次迭代中,while循环体中的语句把布尔标记设置为false,结束循环,如下面的例子所示。 int i = 10,sum = 0;
while (i > 0) {
i --;
sum += i;
}
3. do…while循环
do...while循环是while循环的后测试版本。do...while循环适合于至少执行一次循环体的情况:
int i = 10, sum = 0;
do { i--; sum += i;
} while (i > 0);
4. for each循环
foreach循环是我们讨论的最后一种C#循环机制。也是非常受欢迎的一种循环。 从下面的代码中可以了解foreach循环的语法,其中假定arrayOfInts是一个整型数组: int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers) {
System.Console.WriteLine(i);
}
其中,foreach循环一次迭代数组中的一个元素。对于每个元素,它把该元素的值放在int型的变量temp中,然后再执行一次循环迭代。
如果需要迭代集合中的各项,并改变它们的值,就应使用for循环。
4.3、跳转语句
C#提供了许多可以立即跳转到程序中另一行代码的语句,在此,先介绍goto语句。
1. goto语句
goto语句可以直接跳转到程序中用标签指定的另一行(标签是一个标识符,后跟一个冒号): goto Label1;
Console.WriteLine(\
Label1:
Console.WriteLine(\
goto语句有两个限制。不能跳转到像for循环这样的代码块中,也不能跳出类的范围,不能退出try...catch块后面的finally块。goto语句的名声不太好,在大多数情况下不允许使用它。一般情况下,使用它肯定不是面向对象编程的好方式。
前面简要提到过break语句——在switch语句中使用它退出某个case语句。实际上,break也可以用于退出for、foreach、while或do...while循环,循环结束后,立即执行后面的语句。
如果该语句放在嵌套的循环中,就执行最内部循环后面的语句。如果break放在switch语句或循环外部,就会产生编译时错误。
2. continue语句
continue语句类似于break,也必须用于for、foreach、while或 do...while循环中。但它只从循环的当前迭代中退出,然后从循环的下一次迭代开始重新执行,而不是退出循环。
3. return语句
return语句用于退出类的方法,把控制返回方法的调用者,如果方法有返回类型,return语句必须返回这个类型的值,如果方法没有返回类型,应使用没有表达式的return语句。
4.4、异常处理
Try – catch(s) Try – finally
Try – catch(s) – finally
五 程序结构
5.1、类
C#中的类是对数据结构的封装,是C#最重要的组成部分。我们利用类定义各种新的数据类型,其中既包含数据内容,有包含数据操作,封装之后,类可以控制外界对它成员的访问。
类的静态成员属于类,非静态成员属于这个类的某个实例。
在一个类的实例——对象的生命周期中,最先执行的代码是类的构造函数,构造函数总是用来初始化对象的特殊类型的函数。
不带参数的类的构造函数对类的实例的初始化始固定的,我们也可以使用带参数的构造函数,通过向他传递参数来对类的不同实例进行不同的初始化。构造函数同样也可以使用默认参数。
当这个类的实例超出了作用域的时候,或者由于其它理由被破坏时,析构函数将释放分配给该实例的任何存储区。
5.2、命名空间
命名空间提供了一种组织相关类和其它类型的方式。与文件或组件不同,命名空间时一种逻辑组合,而不是物理组合,在C#文件中定义类时,可以把它包含在命名空间的定义中,以后在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉其它使用类的开发人员如何使类相关,和对他们进行使用。
命名空间可以嵌套。如: Namespace A {
Namespace B {
Namespace C {
代码块 } } }
每个命名空间名都由他所在的命名空间的名称组成,这些名称用句号隔开,首先是最外层,最后是自己的名字。如:上面的例子也可以写成: Namespace A. B. C {
代码块
共分享92篇相关文档