您的位置:首页 > 编程语言 > C#

C#2005 .NET3.0高级编程学习笔记————流控制

2008-01-29 17:38 459 查看
条件语句

条件语句可以根据条件是否满足或根据表达式的值控制代码的执行分支。C#有两个控制代码分支的结构:if语句,测试特定条件是否满足;switch语句,它比较表达式和许多不同的值。

if语句

对于用过编程语言的人来说,其语法是非常直观的:


if(condition)


statement(s)


else


statement(s)

如果在条件中要执行多个语句,就需要用花括号({……})把这些语句组合为一个块。


bool isZero;


if(i==0)




...{


isZero=true;


Console.WriteLine("i is zero");


}


else




...{


isZero=false;


Console.WriteLine("i is not zero");


}

还可以单独使用if语句,不加else语句。也可以合并else if子句,测试多个条件。


using System;


namespace ling.test




...{


class test1




...{


static void Main(string[] args)




...{


string input;


input=Console.ReadLine();


if(input=="")




...{


Console.WriteLine("it`s empty string");


}


else if(input.Length<5)




...{


Console.WriteLine("it`s less than 5 charracters");


}


else if(input.Length<10)




...{


Console.WriteLine("it`s least 5 but less than 10 characters");


}


}


}


}

添加到if子句中的else if语句的个数没有限制。对于if,如果条件分支中只有一条语句,就无需使用花括号,但是为了保持以至,许多程序员只要使用if语句,就加上花括号。

if子句中的表达式必须等于布尔值。if语句不能直接测试整数,必须明确的把返回的整数转换为true或false。

switch语句

switch...case语句适合从一组互斥的分支中选择一个执行分支。其形式是switch参数后面跟一组case子句。如果switch参数中表达式的值等于某个case子句旁边的某个值,就执行该case子句中的代码,只需使用break语句标记每个case代码的结尾即可。


switch(test)




...{


case 1:


Console.WriteLine("it`s 1");


break;


case 2:


Console.WriteLine("it`s 2");


break;


case 3:


Console.WriteLine("it`s 3");


break;


default:


Console.WriteLine("it`s not 1,2 or 3");


break;


}

注意case的值必须是常量表达式,不允许使用变量。如果激活了块中靠前的一个case子句,后面的case子句就不会被激活,除非使用goto语句特别标记要激活后面的case子句。但有一种例外情况,如果一个case子句为空,就可以从这个case跳到下一个case上,这样就可以处理两个或多个case子句了。


switch( country)




...{


case "eu":


case "uk":


case "us":


language="English";


break;


case "at":


case "de":


language="German";


break;


}

switch语句的一个有趣的地方是case子句的排放顺序是无关紧要的,甚至可以把default子句放在最前面。因此任何两个case子句都不能相同,包括值相同的不同常量:


const string england ="uk";


const string britain="uk";


switch(country)




...{


case england:


case britain: //错误


language="English";


break;


}

循环

C#提供了4种不同的循环机制(for,while,do...while,foreach)。

for循环

for循环提供的迭代循环机制是在执行下一次迭代前,测试是否满足某个条件,语法如下:


for(执行第一次迭代前要计算的表达式; 每次迭代循环前要测试的表达式; 每次迭代完要计算的表达式)


{
循环体...
}

for循环是所谓的预测试循环,因为循环条件是在执行循环语句前计算的,如果循环条件为假,循环语句就根本不会执行。for循环非常适合于一个语句或语句块重复执行预定的次数。

嵌套的for循环非常常见,在每次迭代外部循环时,内部循环都要彻底执行完毕。

while循环

while循环也是一个预测试循环。但它只有一个表达式。while循环最常用于循环开始前不知道重复执行一个语句或语句块的次数的情况。


while(每次迭代新循环前要测试的表达式)




...{


循环体...


}

do...while循环

do...while循环是while循环的后测试版本。该循环的测试条件要在执行完循环体之后执行,因此适合于至少执行一次循环体的情况。


do




...{


循环体...


} while(每次迭代新的循环前要测试的表达式)

foreach循环

foreach循环可以迭代集合中的每一乡项。要使用集合对象,就必须支持IEnumerable接口。它不能改变集合中的各项的值。


foreach(int temp in test)




...{


Console.WriteLine(temp);


}

跳转语句

goto语句

goto语句可以直接跳转到程序中用标签指定的另一行:


goto Label1;


Console.WriteLine("hallo");


Label1:


Console.WriteLine("world");

它有2个限制:不能跳转到像for循环这样的代码块中,也不能跳出类的范围,不能退出try...catch块后面的finally块。

在大多数情况下不允许使用它。但是在一个地方使用它是相当方便的——在switch语句的case子句之间跳转。

break语句

在switch语句中使用它退出某个case语句。也可用于退出for,foreach,while和do...while循环,该语句会使控制流执行后面的语句,如果break放在switch语句或循环外部就会产生编译错误。

continue语句

continue语句类似于break,也必须在for,foreach,while或do...while循环中使用。但它只能退出循环的当前迭代,开始执行循环的下一次迭嗲,而不是退出循环。

return语句

return语句用于退出类的方法,把控制权返回方法的调用者,如果方法有返回类型,return语句必须返回这个类型的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: