目录
if...else语法:逻辑表达式为真,则执行块内语句;为假,则执行else下的块语句。
for语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
foreach(数据类型 变量名 in 数组名){ //语句块;}
语句
C#的语句与C和C++的语句类似。
不同点在于数字在C#中没有布尔意义。
语句的定义:
- 语句是描述某个类型或让程序执行某个动作的源代码指令
- 语句主要有三种类型
- 声明语句 声明类型或变量
- 嵌入语句 执行动作或管理控制流
- 标签语句 控制跳转
- 简单语句由一个表达式和末尾的分号组成
- 块由一个大括号组成
示例代码段:
int x=10; //简单声明
int z; //简单声明
z=0; //简单声明
;
{ //块
int y; //简单声明
z=x+y; //嵌入语句
if(x<z) //嵌入语句
; //空语句(仅由一个分号组成)
top:y=30;//标签语句
{
... //嵌套块
} //结束嵌套块
} //结束块
1.程序控制流语句
程序流程结构:
- C#支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
1.1 选择语句
类似分岔路,每条路都通向同一个方向,只是这一段风景不同。
1.1.1 if
if语法:逻辑表达式为真,则执行块内语句;为假,则跳过块内语句。
示例代码段:
int x=10;
if(x<11) //if(逻辑条件) 中逻辑条件必须要返回布尔值,不能填数字,因为C#中数字不具有布尔意义
{ //块
x +=1; //执行语句
} //结束块
Console.Writeline(x); //打印 “11”
注意:if后面不要加分号
if语句的补充
- 嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断
- 关于if语句的区间性判断
1.1.2 if...else
if...else语法:逻辑表达式为真,则执行块内语句;为假,则执行else下的块语句。
示例:
int x=12;
if(x<11) //逻辑条件1
{ //块
x +=1; //执行语句
} //结束块
else if(x=12) //逻辑条件2
else //若以上逻辑条件都为假,则执行下面块语句
{
x-=1;
}
Console.Writeline(x); //打印 “11”
1.1.3 switch
switch语法图:
示例代码段:
int x=2;
switch(x) //计算X的值
{
case 1: //如果x的值为1
Console.Writeline(x+1);
break; //break为结束符
case 2: //如果x的值为2
Console.Writeline(x+2);
break;
case 3: //如果x的值为3
Console.Writeline(x+3);
break;
default: //如果以上都没有x的值
Console.Writeline(x);
break;
}
//最后打印 “4”
1.2 循环语句
满足逻辑条件,则会一直循环块语句。为了避免一直满足逻辑条件,造成死循环,在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环。
1.2.1 while
whlie语法:
示例:
int x=10; //设置变量x
int count=0; //设置变量count来记录循环次数
while(x>5)
{
count++; //每循环一次,count加一
Console.Writeline("执行第{0}次",count); //会循环5次
x--; //每循环一次,x减一
}
1.2.2 do...while
do...while和while的区别在于do...whlie在判断逻辑条件之前会先执行一次。
示例:
int x=10; //设置变量x
int count=0; //设置变量count来记录循环次数
do
{
count++; //每循环一次,count加一
Console.Writeline("执行第{0}次",count); //会循环5次
x--; //每循环一次,x减一
}while(x>5);
注意:不要忘了whilel()后面的分号
1.2.3 for
for语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
for语法图 :其中0 1 2 3表示for循环的执行顺序。
- 注意:for循环中的表达式,要用分号进行分隔
- 总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用
循环的补充
- 嵌套循环
- 作用: 在循环体中再嵌套一层循环,解决一些实际问题
- 例如我们想在屏幕中打印如下图片,就需要利用嵌套循环
1.8
- 外层循环执行一次 内层循环执行一轮
1.2.4 foreach
foreach 循环用于列举出集合中所有的元素,foreach 语句中的表达式由关键字 in 隔开的两个项组成。
in 右边的项是集合名,in 左边的项是变量名,用来存放该集合中的每个元素。
foreach语法:
foreach(数据类型 变量名 in 数组名)
{
//语句块;
}
示例代码段:记录五个商品每个的单价,以及它们的总和。
int[] pays = { 90, 100, 2, 5, 3 };
int sum = 0;
int count = 1;
foreach (int pay in pays)
{
sum = sum + pay;
Console.WriteLine("第" + count + "件" + "花费:" + pay + "元");
count++;
}
Console.WriteLine("总共花费:" + sum + "元");
编译图演示:
1.3 跳转语句
1.3.1 break
作用: 用于跳出选择结构或者循环结构
- break使用的时机:
- 出现在嵌套循环中,跳出最近的内层循环语句
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
1.3.2 continue
作用:在==循环语句==中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注意:continue并没有使整个循环终止,而break会跳出循环
1.3.3 return(简述)
作用:直接作为一条语句表示当前函数(也可以叫做方法)结束。
语法:return; 或者 return 值;
解释:return后有东西,则是返回和函数返回类型一致的对象。
1.3.4 goto
作用:可以无条件跳转语句
语法: goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
代码段示例:
bool thing=true;
while(thing)
{
if(thing)
goto flagOne;
else
flagOne:thing=false;
}
注意:
- goto语句可以跳到它所在块内的任何标记处,或跳到任何嵌套它所在块的标记处。但不能跳到它所在块内的嵌套块中。
- goto语句不推荐使用,原因是它会导致代码难以维护、调试。这里仅在于了解。
1.3.5 throw(简述)
作用:发出程序执行期间出现异常的信号。
语法:throw [e];
2.using语句
某些类型的非托管对象有数量限制或很耗费系统资源。我们需要在使用完这些对象后,尽快的释放它们就非常重要。而using语句的存在有助于简化该过程并确保这些资源被适当地处理。
(其中资源指的是实现了System.Disposable接口的类或结构,而接口就是某些未实现的函数成员的集合,类和结构可以选择去实现它们。)
IDisposable接口含有单独一个名称为Dispose的方法,该方法的作用是释放资源。
使用资源的阶段由以下部分组成:
- 分配资源
- 使用资源
- 处置资源
如图 :
2.1 包装资源的使用
using语句的存在减少了程序意外运行时,代码中隐藏的错误带来的潜在问题(即异常)。它整洁地包装了资源的使用。
有两种形式的using语句:
- using(资源类型 标识符 = 表达式)使用资源
- using(标识符)使用资源
第一种形式的using语句用的是处理异常的标准方法:把可能导致异常的代码放进一个try块中,并把无论有无错误都必须执行的代码放进finally块中。
它执行以下任务:
- 分配资源
- 把资源放进try中
- 创建资源的Dispose方法的调用,为了避免发生异常导致Dispose方法不被调用,将它放进finally方法中
如图:
示例代码段:
using System; //using指令,后面章节会讲
using System.IO; //using指令
//using语句
//TextWriter资源打开一个文本文件,并向文件写入一行字符串
using (TextWriter tw = File.CreateText("Lincoln.txt"))
{
tw.WriteLine("its fine");
}
//using语句
//TextWriter资源打开一个文本文件,并向文件写入一行字符串
using (TextReader tr = File.OpenText("Lincoln.txt"))
{
string InputString;
while (null != (InputString = tr.ReadLine()))
Console.WriteLine(InputString);
}
输入示例:
第二种形式能确保使用资源后总是调用Dispose方法,但不能防止在using语句已经施放资源后还使用该资源,这可能导致状态不一致。因此不推荐使用。
2.2 using的补充和嵌套
语法:using(资源类型 标识符1 = 表达式1,标识符2 = 表达式2,...)使用资源
还可以嵌套:
//using语句
using (TextWriter tw = File.CreateText("Lincoln.txt"))
{
tw.WriteLine("its fine");
//using语句
using (TextReader tr = File.OpenText("Lincoln.txt"))
{
string InputString;
while (null != (InputString = tr.ReadLine()))
Console.WriteLine(InputString);
}
}
3.其他语句


被折叠的 条评论
为什么被折叠?



