【C#基础学习】第九章、语句

目录

语句

1.程序控制流语句

1.1 选择语句

1.1.1 if

if语句的补充

1.1.2 if...else

if...else语法:逻辑表达式为真,则执行块内语句;为假,则执行else下的块语句。

1.1.3 switch

1.2 循环语句

1.2.1 while

1.2.2 do...while

1.2.3 for

for语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

循环的补充

1.2.4 foreach

foreach语法:

foreach(数据类型  变量名  in  数组名){    //语句块;}

1.3 跳转语句

1.3.1 break

1.3.2 continue

1.3.3 return(简述)

1.3.4 goto

注意:

1.3.5 throw(简述)

2.using语句

2.1 包装资源的使用

2.2 using的补充和嵌套

3.其他语句


语句

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语法:逻辑表达式为真,则执行块内语句;为假,则跳过块内语句。

1.1

 示例代码段:

int x=10;

if(x<11)    //if(逻辑条件)  中逻辑条件必须要返回布尔值,不能填数字,因为C#中数字不具有布尔意义
{    //块
    x +=1;    //执行语句
}    //结束块

Console.Writeline(x);    //打印 “11”

注意:if后面不要加分号

if语句的补充

  • 嵌套if语句:在if语句中,可以嵌套使用if语句,达到更精确的条件判断
  • 关于if语句的区间性判断
    • 可以通过合理安排判断顺序和将区间性判断进行拆解来避免使用区间判断scdn参考文献
    • 也可以用逻辑运算符来表示scdn参考文献

1.1.2 if...else

if...else语法:逻辑表达式为真,则执行块内语句;为假,则执行else下的块语句。

1.2

示例:

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语法图:

1.3
1.4

示例代码段:

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语法:

1.5

 示例:

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在判断逻辑条件之前会先执行一次。

1.6

 示例:

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循环的执行顺序。

1.7

  • 注意: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.9

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的方法,该方法的作用是释放资源。

使用资源的阶段由以下部分组成:

  • 分配资源
  • 使用资源
  • 处置资源

如图 :

1.10

2.1 包装资源的使用

using语句的存在减少了程序意外运行时,代码中隐藏的错误带来的潜在问题(即异常)。它整洁地包装了资源的使用。

有两种形式的using语句:

  • using(资源类型 标识符 = 表达式)使用资源
  • using(标识符)使用资源

第一种形式的using语句用的是处理异常的标准方法:把可能导致异常的代码放进一个try块中,并把无论有无错误都必须执行的代码放进finally块中。

它执行以下任务:

  • 分配资源
  • 把资源放进try中
  • 创建资源的Dispose方法的调用,为了避免发生异常导致Dispose方法不被调用,将它放进finally方法中

如图:

1.11

示例代码段:

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);
            
}


输入示例:

1.12

第二种形式能确保使用资源后总是调用Dispose方法,但不能防止在using语句已经施放资源后还使用该资源,这可能导致状态不一致。因此不推荐使用。

图1.13

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.其他语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ohrkaninchen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值