分支语句
进行两个或者两个以上选择时,可以使用分支语句,C#提供两种分支语句if语言和switch语句
if语句
根据布尔表达式(True或False)来选择执行的语句
常见形式:
(1)单独使用if语句,不加else语句
if(布尔表达式)
{
...
}
(2)if语句和else语句配套使用的单条件测试
if(布尔表达式)
{
表达式为真执行的语句
}
else
{
为假时执行的语句
}
(3)else块中嵌套if语句的多条件测试
if(布尔表达式1)
{
1为真时执行的语句
}
else if(布尔表达式2)
{
2为真时执行的语句
}
else
{
所有条件为假时执行的语句
}
switch语句
适用于一个表达式有多个可选值的情况
switch (表达式)
{
case 常量表达式1:
语句序列1
case 常量表达式2:
语句序列2
...
[default:语句序列]
}
注意:
(1)常量表达式。switch条件表达式的值和每个case后的常量表达式可以是string、int、char\enum或者其他类型。
(2)语句序列。每个case后的语句序列可以用大括号括起来,也可以不用大括号,但是每个case块的最后一句一定要是break,goto或者return语句,否则会在编译时提供错误
循环
有for语句、while语句、do-while语句和foreach语句,其中foreach语句主要用于对集合进行操作
for语句
for(初始值;循环条件;循环控制)
{
语句序列;
}
foreach语句
适合对集合对象的存取,可以用该语句逐个提取集合中的元素,并对集合中每个元素执行语句序列中的操作,其一般形式为:
foreach(类型 标志服 in 表达式)
{
语句序列
}
例如:
int [] x={1,2,3};
foreach(int i in x)
{
Console.WriteLine(i);
}
while语句
条件为True时,会反复执行循环体内的语句序列,知道条件为False为止
while(条件语句)
{
语句序列
}
do-while语句
do
{
语句序列
}while(条件)
跳转语句
break语句
退出最近的封闭switch、while、do-while、for或foreach语句
continue语句
不再执行continue语句后面循环块内剩余的语句,而是将控制直接传递到下一次循环。可以用在while、do-while、for或foreach语句
goto语句
将控制转到由标识符制定的语句
只用于以下两种情况:
(1)在switch语句中从一个case标签转到另一个case标签中
(2)从多重循环体内部直接跳转到最外层的循环体外
for(int i=0;i<100;i++)
{
for(int j=0;j<100;j++)
{
....
if(条件表达式==true)
goto Exit;
}
}
Exit:
Console.WriteLine("The number k is {0}",k);
return 语句
return [表达式];
表达式是可选项,如果该函数成员的返回类型不为null,则return语句必须使用表达式返回这个类型的值,否则return语句不能使用表达式
异常处理语句
try-catch语句
try
{
语句序列
}
catch(异常类型 标识符)
{
异常处理
}
在程序运行正常的时候在,执行try块内的程序,如果try块中出现了异常,程序就转移到catch块中执行
try-catch-finally语句
如果try后面有finally块,不论是否出现异常,也不论是否有catch块,finally块总是执行的,即使在try内使用跳转语句或者return语句也不能避免finally块的执行
一般在finally块内做释放资源的操作,如关闭打开的文件、关闭与数据库的连接
try
{
语句序列
}
catch(异常类型 标志符)
{
异常处理
}
finally
{
语句序列
}
throw语句
有时候在方法中出现了异常,不一定要立即把它显示出来,而是想把这个异常抛出并让条用这个方法的程序进行捕捉和处理,这时可以使用throw语句
throw [表达式];
可以使用throw语句抛出表达式的值,注意:表达式必须是System.Exception类或从System.Exception类继承的类的类型
throw [表达式]