您的位置:首页 > 产品设计 > UI/UE

C#学习 第二章 语句控制,if,switch,try-catch,whlie,foreach,break,continue,goto

2014-12-30 16:31 736 查看

以下文章为C#第二章,包括 选择结构if else,switch case,循环结构 do while,while,for,foreach,跳转语言 break,continue,goto

参考图书:《C#:开发技术大全》

一.顺序结构

即按照自上而下的顺序编写程序,不再赘述。

二.选择结构

1.if else 语句,不再赘述
2.switch 语句
switch语句中,case语句块中的defult语句是指当所有case条件都不符合时,则必须执行default语句,default可写可不写。case语句块中每一个case后面,都必须有一个跳转语句(break或者case)。
在case语句块中,可以使用goto语句,跳转到另一个标签或者其他位置。

一般情况下,default语句放在最后,虽然case语句和default语句的出现顺序没有限制,但将default语句放在switch语句块的结尾是最常用的方式。

三.异常处理

1.一个异常处理语句可以有以下几种情况
有一个finally块,无catch块。
有一个或多个相关的catch块,无finally块。
包含一个或多个catch块,同时有一个finally块。
2.throw语句
throw语句用于发生在程序执行期间出现反常情况的信号,throw语句通常与try-catch语句一起使用,可以使用throw语句显示引发异常。
3.try-catch-finally语句
异常发生时,必须处理异常,同时将控制权交给最近的异常处理语句,这就意味着不能按正常的设计思想执行。而且有些资源清理程序(如关闭文件)必须执行,为了实现该功能,可以使用finally块。即便有异常情况发生,finally块也可以清除try块中分配的任何资源,以及运行必须执行的代码。最后控制权总会交给finally块。与try块的退出方式无关。

四.跳转语句

1.break语句
break语句用来终止一条循环,使控制流程跳转到循环体外的下一条语句。
2.continue语句
continue语句功能是结束本次循环,返回条件选择部分,重新开始下一次循环。continue语句只能用在循环结构中。
continue语句不会像break语句那样干涉循环体重复的次数,它只是影响某特定循环中的流程控制。
3.goto语句
goto语句属于无条件跳转语句,因为c#允许在代码行上加标签,这样就可以用goto语句直接跳转到这些代码行上,在代码行上必须有其他语句,否则这样是错误的。该语句有其优缺点,优点在于可以方便的控制何时去执行制定代码。缺点在于过多的使用这个语句将降低代码的可读性。
4.return语句
return语句用于终止它所在的方法的执行。并将控制权返回给调用方法。另外它还可以返回一个可选值。如果方法为void类型,则可以省略(此时不可写)。

#region condition
/// <summary>
/// 条件选择结构
/// if else
/// switch case
/// 异常处理
/// throw
/// try catch
/// 异常类继承层次结构为 System.Object->System.Exception->SystemException->派生类
/// 基类Exception 存在以下两种异常
/// 从SystemException派生的预定义公共语言运行库异常。
/// 从ApplicationException 类派生的用户定义的应用程序异常。
/// </summary>
class condition
{

public void test()
{
// CIR:                                    //跳转标签
Console.Write("请输入一个年份:");
int x=0;
try
{
x = Convert.ToInt32(Console.ReadLine());
}
catch (Exception e)  //捕获所有异常为关键字Exception,当然也可以指定异常捕获(FormatException e)
{
Console.WriteLine();
Console.WriteLine("导致异常的对象为:{0}", e.Source.ToString());
Console.WriteLine("导致异常的方法为:{0}", e.TargetSite.ToString());
Console.WriteLine("异常的内容为:{0}", e.Message.ToString());
Console.WriteLine();
//    throw e;                                                      //在此会捕获异常
// goto CIR;
}
finally
{
Console.WriteLine("您输入的年份为:{0}",x);
if (x % 4 == 0&&x!=0)
{
if (x % 100 == 0)
{
Console.WriteLine("该年份为闰年");

}
else if (x % 400 == 0)
{
Console.WriteLine("该年份为闰年");

}
else
{
Console.WriteLine("该年份非闰年");

}
}
else
{
Console.WriteLine("该年份非闰年");

4000
}
}
READ:                                     //定义goto的标签。
Console.Write("请输入性别:");
string sex=Console.ReadLine();
sex.ToLower();                            //将字符串转换为小写。
switch (sex)
{
case "男":
Console.WriteLine("性别为男性");
break;
case "女":
Console.WriteLine("性别为女性");
break;
case"male":
goto case "男";                 //在case中使用goto语句。跳转到任意case。
case "female":
goto case "女";
default:                            //当任意一个case都不能匹配时,将执行default语句。
Console.WriteLine("你输入的字符串不能识别");
goto READ;                     //在case中使用goto语句,跳转到goto标签。
}
}
}//end of condition
#endregion







五.循环结构

1.while与do while
whlie是先判断再执行,do-while是先执行,再判断,所以do-while无论如何都会执行第一次。
2.for
for语句就不再赘述。
2.foreach
foreach语句是为简化对数组或集合的循环访问而设计的。它为数组或集合中的每个元素重复地嵌入一个语句体。另外,它还可以循环访问集合以获取所需信息,但不能用于更改集合内容以避免不可预知的副作用。
#region circulate
/// <summary>
/// 循环结构
/// whlie
/// do whlie
/// for
/// foreach
/// continue
/// </summary>
class circulate
{
public void test()
{
int a=1,b=1;
string[,] str = new string[,] { { "a", "b", "c" }, { "d", "e", "f" } };
while(a<5)   //while的执行次数是大于等于0次
{
Console.WriteLine("此处为while循环打印,条件为i<5,当前i={0}",a);
a += 1;
}

do  //由此可以看出,不管条件怎么样,do whlie都有执行一次,然后才是判断
{
Console.WriteLine("此处为do while循环打印,条件为j<5,当前j={0}", b);
b += 1;
}while(b<5);

foreach(string item in str)  //对于具有相同特性的对象操作时,可以使用foreach语句,
{                            //如对同一容器(groupbox)内的控件(button)的统一操作
Console.Write(item);
}

for (int index = 0; index < str.GetLength(0);index++ ) //getlength(0) ,0表示行数,1表示列数
{
Console.WriteLine();
for (int jndex = 0; jndex < str.GetLength(1);jndex++ )
{
Console.Write(str[index,jndex]);   //此处与其他语言的数组不同
}
}
Console.WriteLine();
for (int i = 0; i < 5; i++)
{
if (i < 3)
{
continue;
}
Console.WriteLine(i.ToString());
}
}
}//end of circulate
#endregion



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐