C#学习(三)—语句控制
来源:互联网 发布:php银联支付流程 编辑:程序博客网 时间:2024/05/19 18:45
一、选择语句(根据某个条件是否为True来将程序控制权移交给特定的流程)
1、if语句
此语句主要用来做选择,可与else结合使用。
(1)其声明语言如下:
if(conditions) //conditions为布尔表达式 statement(s) //符合布尔表达式执行的代码 else statement(s) //不符合布尔表达式执行的代码
(2)示例1:if…else
static void Main(string[] args) { bool flag = true; if (flag = true) { Console.WriteLine("the flag is true."); } else { Console.WriteLine("the flag is false."); }
示例2:else if
static void Main(string[] args) { string grade; int score; Console.WriteLine("Input your score:"); score = Convert.ToInt32(Console.ReadLine()); if (score > 100 || score < 0) { Console.WriteLine("false score range!"); return; } if (score > 90) grade = "A"; else if(score>80) grade="B"; else if(score>70) grade="C"; else if(score>60) grade="D"; else grade="E"; Console.WriteLine("your grade is {0}", grade);
2、switch语句
switch语句是一个控制语句,它通过控制传递给其体内的一个case语句来处理多个选择和枚举。switch语句中有很多case区段,每个擦色标记后可以指定一个常数作为标准,不能将一组常数放在一个case标记之后。
(1)其声明语言如下:
switch(判断条件) { case1 判断式; //区段,符合条件执行的代码 break case2 判断式; //区段,符合条件执行的代码 break case 3判断式; //区段,符合条件执行的代码 break … default: //最后排除的代码输出 break }
(2)示例
static void Main(string[] args) { string mycountry = "中国"; switch (mycountry) { //如果mycountry为“中国”,就执行分支1 case "中国": Console.WriteLine("中国"); break; //如果mycountry为“美国”,就执行分支1 case "美国": Console.WriteLine("美国"); break; //如果mycountry值是“值都不符合以上分支内容,则执行default语句 default : Console.WriteLine("无"); break; } Console.ReadLine(); }
运行结果:中国
注:if语句与switch语句的区别
If语句通过范围来判断
switch语句通过具体判断(a=5时)
二、迭代语句(是可重复执行多次某区段的程序代码)
1、while语句
用于执行重复程序代码的语句,在循环次数不固定时相当有效。
(1)其声明语言如下:
while(布尔表达式){ 循环体}
(2)示例
static void Main() { Console.WriteLine("输出的结果为:"); int n=1; while (n<6) { Console.WriteLine("循环第{0}次",n); n++; } Console.Read(); }
运行结果:
注:当break、goto、return或throw语句将控制权转移到while循环之外时,可以终止该循环。若要将控制权传递给下一次迭代但不退出循环,请使用continue语句。
2、do-while语句
(1)其声明语言如下:
do{ 循环体}while(布尔表达式)
(2)示例
static void Main() { Console.WriteLine("输出的结果为:"); int n=1; do { Console.WriteLine("循环第{0}次",n); n++; } while (n<0); Console.Read(); }
注:
第一:当n<0或1、2时,循环一次;n<3时,循环2次;随数字的增大,循环次数增多。
第二:选择whie循环还是do-while循环取决于所解决的计算机问题,但大部分情况下选择while循环。
3、for语句
for语句循环重复执行一个语句或语句块,直到指定的表达式计算为False值。for循环对于迭代数组和顺序处理非常方便。for语句将初始值、布尔判断和更新值都编写在同一行程序中。
(1)其声明语言如下:
for(初始值;布尔表达式;更新值) { 程序代码块 }
(2)示例
static void Main() { Console.WriteLine("输出的结果为:"); for (int i = 0, j = 10; i <= j; i++, j--) { Console.WriteLine("{0},{1}", i, j); } Console.Read(); }
运行结果:
4、foreach语句
foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。foreach语句能够对实现Ienumerable接口的容器进行遍历,并提供一个枚举来实现Ienumerable接口(是公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。)。
(1)其声明语言如下
foreach (类型名 变量名 in 集合对象){ statement}
其中:
类型:identifier 的类型。
变量名(identifier):表示集合元素的迭代变量。如果迭代变量为值类型,则无法修改的只读变量也是有效的。
集合对象(expression):对象集合或数组表达式。集合元素的类型必须可以转换为 identifier 类型。请不要使用计算为 null 的表达式。
而应计算为实现 IEnumerable 的类型或声明 GetEnumerator 方法的类型。在后一种情况中,GetEnumerator 应该要么返回实现 IEnumerator 的类型,要么声明 IEnumerator 中定义的所有方法。
statement:要执行的嵌入语句。
(2)示例
static void Main(string[] args) //程序入口 { Console.WriteLine("请输出结果:"); //程序输出时需要 int[] fibarray=new int[]{0,1,2,3,5}; //数组 foreach(int i in fibarray) //foreach语句遍历数组 { System.Console.WriteLine(i); //控制台输出 } Console.Read(); //读取一个字符,返回该字符的ascII码, }
运行结果:
三、跳转语句(转换程序的执行权)
1、break语句
break语句可以用来终止一条迭代语句,是控制流程跳转到迭代语句的下一条语句。break语句可以放在循环体的任意位置来实现这一目的,若要中止整个嵌套循环,可以使用return语句。
(1)其声明语言如下:break(和其它语句一起用)
(2)示例
static void Main() //程序入口 { Console.WriteLine("输出结果为:"); for (int i = 1; i <= 10; i++) //for循环 { if(i>4) //i>4时 { break; //中断 } Console.WriteLine(i); //输出结果 } Console.Read(); }
运行结果:
2、continue语句
使执行流程跳过循环体的剩余部分而继续执行下一个循环。
(1)其声明语言如下:continue(与其他语句一起使用)
(2)示例
static void Main() //程序入口 { Console.WriteLine("输出结果为:"); for (int i = 1; i <= 5; i++) //for循环 { if(i<3) //i<3时 { continue; //继续,排除小于3的部分 } Console.WriteLine(i); //输出结果 } Console.Read(); }
运行结果:
注:continue语句不会像break语句一样干涉驯化体重复的次数,它只是影响某特定重复中的流程控制。
3、goto语句
goto语句属于无条件跳转语句,因为C#允许在代码行加标签,这样就可以用goto语句直接跳转到这些代码行上。优点:可以方便地控制何时去执行指定代码;缺点:过多地使用这个语句将很难读懂代码段。(标签是一个标识符,后跟一个冒号)
(1)示例
Goto label1: Console.WriteLine("this won't be executed");Label1: Console.WriteLine("from here");
4、return语句
return语句终止它所在的方法的执行,并将控制权返回给调用方法,另外,它可以返回一个可选值。如果方法为void类型,则可以省略return语句。
(1)其声明语言如下:与其他语句一起使用
(2)示例
static string MyStr(string str) //创建一个string类型方法 { string OutStr; //声明一个字符串变量 OutStr = "您输入的数据是:" + str; //为字符串变量赋值 return OutStr; //使用return语句返回字符串变量 } staticvoid Main(string[] args) { Console.WriteLine("请您输入内容:"); //输出提示信息 string inputstr =Console.ReadLine(); //获取输入的数据 Console.WriteLine(MyStr (inputstr )); //调用MyStr方法并显示结果 Console.ReadLine(); }
运行结果:
5、using语句
此语句可以确保在使用完资源密集型的对象后,就处理它们,其语法如下:
(1)其声明语言如下:
using(object) { //code using object }
四、异常处理语句(用来捕获和处理异常)
- 有一个finally块,无catch块。
- 有一个或多个相关的catch块,无finally块。
- 包含一个或多个catch块,同时有一个finally块。
一个try块可以有如下情况:
1、throw语句
throw语句用于发出在程序执行期间出现反常情况(异常)的信号。throw语句通常与try-catch或try-finally语句一起使用。可以使用throw语句显式引发异常(这里引发自定义异常)。创建用户自定义异常,好的编码方法是以“Exception”作为用户自定义异常类名的结尾。
(1)示例(现在还不理解,以后补充解释)
本示例通过Exception派生了一个新异常类UserEmployeeException,该类中定义了3个构造函数,每个构造函数使用不同的参数,然后再抛出自定义异常。程序代码如下。
using System;using System.Collections.Generic;using System.Text;using System.IO;namespace ClsUserExecption{ class Program { public class UserEmployeeException: Exception { private string errorinfo=string.Empty; public UserEmployeeException() { } public UserEmployeeException (string message) : base(message) { errorinfo = message; } public UserEmployeeException (string message, Exceptioninner):base(message,inner) { errorinfo = message; inner = null; } } public static void Main() { try { throw new UserEmployeeException("error Info of use "); } catch (UserEmployeeException ey) { Console.WriteLine("输出结果为:"); Console.WriteLine(ey.Message,ey.InnerException); Console.Read(); } } }}
2、try-catch语句
try-catch错误处理表达式允许将任何可能发生异常情形的程序代码放置在try{}程序代码块进行监控,真正处理错误异常的程序代码则被放置在catch{}块里面,一个try{}块可对应多个catch{}块。
(1)示例(现在还不理解,以后补充解释)
usingSystem;classMainClass{ staticvoidProcessString(stringstr) { if(str==null) { thrownewArgumentNullException(); } } staticvoidMain() { Console.WriteLine("输出结果为:"); try { stringstr=null; ProcessString(str); } catch(ArgumentNullExceptione) { Console.WriteLine("{0}Firstexception.",e.Message); } catch(Exceptione) { Console.WriteLine("{0}Secondexception.",e.Message); } }}
3、try-catch-finally语句
异常发生时,执行将终止,同时将控制权交给最近的异常处理语句,这就意味着不能按正常的设计思想执行。而有些资源清理(如关闭文件)必须总是执行,即使有异常发生,为了实现该功能,可以使用finally块。finally块用于清除try块中分配的任何资源,以及运行必须执行的代码,即使在发生异常的情况下。控制将总是传递给finally块,与try块的退出方式无关。
(1)示例(现在还不理解,以后补充解释)
using System;public class MainClass{static void Main(){int i = 123;string s = "Some string";object o = s;try{i = (int)o;}catch { }finally{Console.Write("i = {0}", i);}Console.Read();}}
注意事项:
异常继承层次结构(从左到右):
System.Object—System.Exception—System.SystemException—派生类
基类Exception存在以下两类异常。
- 从System.Exception派生的预定义公共语言运行库异常。
- 从ApplicationException派生的用户定义的应用程序异常。
- C#学习(三)—语句控制
- C#程序流控制(三)——跳转语句
- oracle控制语句学习三——loop 循环控制语句
- GO语言学习三(流程控制语句)
- C#基础学习——流程控制语句
- C#学习笔记(三)—–C#高级特性:try语句和异常
- C#学习——三种语句结构
- C#程序流控制(一)——条件语句
- C#程序流控制(二)——循环语句
- Ruby快速入门(三):控制语句
- (三)Java程序设计之控制语句
- Ruby快速入门(三):控制语句
- C#循环控制语句
- C#选择控制语句
- C#流程控制语句
- C#流程控制语句
- C#流程控制语句
- C#流程控制语句
- 双机热备与负载均衡区别
- C# 关键字
- 虚拟化VMware简介6——VMotion 简介
- PHP5.4 for Apache ; php 5.4.0安装过程、方法、配置
- hdu - 3925 - Substring(枚举匹配)
- C#学习(三)—语句控制
- 理解session机制
- Linux软件安装常用方法
- Linux中Samba详细安装
- 2013寒假练习 1047 Fibonacci Numbers
- 玩转Windows访问Linux下的共享文件
- linux访问windows的共享文件
- Ubuntu12.04安裝PostgreSQL9.1問題
- linux 开机logo