【C#基础】C# 常用语句讲解

爱编程的鼠鼠 2024-02-12 10:16:55

文章目录

前言

😊大家好,我是writer桑,前面一章已经学习了 C# 中运算符的使用,那本章就开始学习 C# 程序中的常用语句吧,希望看完大家能够有所收获,感谢支持!

语句概念

程序的执行操作使用语句表示,常见的语句操作包括声明迭代、判断语句、调用方法,以及根据给定条件跳转到另一个代码块等。语句在程序中的执行顺序称为 “控制流” 或 “执行流”, 也即程序根据语句执行着不同的操作。

1,迭代语句

迭代语句是反复执行的语句或语句块,直到满足某些条件为止,其中包括 for 语句、foreach 语句、do 语句和 while 语句 。使用迭代语句实现重复控制结构时,在迭代语句中的任何地方,都可以使用 break 语句跳出当前所在循环,或者使用 continue 语句进行循环的下一个迭代。

1.1 for 语句

for 语句内指定的条件判断为 true 时,for 语句会执行一次循环体的内容,直到条件判断为 false 时会结束循环。实现一个小于5的计数器例子,借此来讨论 for 语句的语法。

示例如下:

for (int i = 0; i < 5;i++)     // 初始化表达式;条件判断;迭代部分
{
    Console.WriteLine(i);       // 循环体的声明 
} 

上述示例展示了 for 语句的构成部分:

  • “初始化表达式” 部分仅在进入循环前执行一次。通常在该部分中声明并初始化局部循环变量,但不能从 for 语句外部访问声明的变量。

上例中的"初始化表达式"部分声明并初始化了 int 类型的变量 i :

int i = 0;
  • “条件判断” 部分是用来确定是否应执行循环中的下一个迭代。如果判断结果为 true 或为 null, 则执行下一个迭代,否则退出循环。注意条件判断部分必须为布尔表达式。

上例中的"条件判断"部分表示判断变量 i 是否小于 5:

i < 5;
  • “迭代部分” 是在循环体每次执行完后再执行的操作。

上例中的"迭代部分"使用增量运算符表示每次执行完变量 i 加1:

i++
  • "循环体"部分是 for 语句每次循环需要执行的内容,同时"循环体"部分必须是一个语句或代码块。

上例中的"循环体"部分在每次循环中输出变量 i:

Console.WriteLine(i);

for 语句流程图:

https://img-blog.csdnimg.cn/76eadbdfda4049d8a87154d6703df06d.png#pic_center

注意,for 语句的所有部分都是可选的, 可以在 for 语句的外部声明上述的三个部分,但是如果缺少部分声明可能会造成无限 for 循环。

示例如下:

// 报错,省略初始化部分 
for(; i < 5; i++)
{
    Console.WriteLine(i);
}
// 死循环,省略条件判断部分 
for (int j = 1; ; j++)
{
    Console.WriteLine(j);
}
// 死循环,省略迭代部分 
for (int k = 1; k < 5;)
{
    Console.WriteLine(k);
}
// 三个部分都省略
for (; ; )
{
    // 死循环...
}

1.2 foreach 语句

foreach 语句用于列举出迭代对象中所有的元素,foreach 语句中的表达式由关键字 in 隔开的两个项组成。in 右边的项是可迭代对象,in 左边的项是只读变量,用来存放该集合中的每个元素。 借一个简单的示例讨论 foreach 语句的语法。

示例如下:

// 可迭代对象 fibNumbers 
var fibNumbers = new List<int> { 0, 1, 1, 2, 3, 5, 8, 13 };

foreach (int element in fibNumbers)     // 只读变量 element 
{
    Console.Write($"{element} ");        // 循环体 
} 

// 输出: 
// 0 1 1 2 3 5 8 13 

上述示例展示了 foreach 语句的构成部分:

  • “可迭代对象” 也就是可以被 foreach 语句迭代的对象,当一个对象实现了 GetEnumerator 方法且具有公共 Current 属性和公共无参数 MoveNext 方法时,这个对象就可以被 foreach 语句迭代。

上例中的"可迭代对象"声明了一个 List 类型的元素 fibNumbers,并存放了一些数字元素:

var fibNumbers = new List<int> { 0, 1, 1, 2, 3, 5, 8, 13 };
  • "只读变量"是在循环中接收迭代对象中的元素,可迭代对象中的每个元素都会依次赋值给只读变量。可以在循环体中对只读变量进行操作。

上例中的"迭代元素"声明了一个 int 类型的变量 element :

int element in fibNumbers
  • "循环体"部分是 foreach 语句每次循环需要执行的内容,同时"循环体"部分必须是一个语句或代码块。

上例中的"循环体"部分在每次循环中输出变量 element:

Console.Write($"{element} ");        // 循环体 

foreach 语句流程图:

https://img-blog.csdnimg.cn/127ad991a23645f1969155894d7526c3.png#pic_center

1.3 while 语句

while 语句是当指定的布尔表达式的计算结果为 true 时,while 语句就会执行一条语句或一个语句块。 由于在每次执行循环之前都会计算布尔表达式, 所以 while 循环会执行零次或多次。借一个例子讨论 while 语句的语法。

示例如下:

int n = 0;

while (n < 5)
{
    Console.WriteLine(n);   // 循环体 
    n++;
}

// 输出: 
// 01234

上述示例展示了 while 语句的构成部分:

  • "布尔表达式"部分是 while 语句每次循环执行之前需要计算的结果,若结果为 true 则执行循环体,反之则退出循环。

上例中的"布尔表达式"声明了 int 类型的变量 n 并判断是否小于5:

while (n < 5)
  • "循环体"部分是 while 语句每次循环需要执行的语句内容,同时"循环体"部分必须是一个语句或代码块。

上例中的"循环体"部分在每次循环中输出整数变量 n,并令 n 自增:

Console.WriteLine(n);   // 循环体 
n++;

while 语句流程图:

https://img-blog.csdnimg.cn/80e65323a1ed44049ab2e2988d57cca3.png#pic_center

1.4 do 语句

do 语句会先执行一次循环体中的语句,再判断 while 语句中布尔表达式是否为真, 如果条件判断为真则继续循环,反之则终止循环。 由于在每次执行循环之后都会计算布尔表达式,所以 do 循环会执行一次或多次,注意不同于 while 循环是执行零次或多次。 借一个简单的例子讨论 do 语句的语法。

示 例:

int n = 0;        // 声明整数 n

do
{
    Console.Write(n);    // 循环体 
    n++;
} while (n < 5);        // while 条件判断式 

// 输出: 
// 01234 

上述示例展示了 do 语句的构成部分:

  • "循环体"部分跟 while 语句一样, 表示每次判断为 true 时需要执行的语句,同时"循环体"部分必须是一个语句或代码块。

上例中的"循环体"部分在每次循环中输出整数变量 n,并令 n 自增:

Console.Write(n);    // 循环体 
n++;
  • do 语句的"布尔表达式"部分与 while 语句没有区别。表示 while 语句每次循环执行之前需要计算的结果,若结果为 true 则执行循环体,反之则结束循环。

上例中的"布尔表达式"声明了 int 类型的变量 n 并判断是否小于5:

while (n < 5);

do 语句流程图:

https://img-blog.csdnimg.cn/97eb7ebea7a743d184f8b4ba265d8835.png#pic_center

2,选择语句

选择语句是根据表达式的值从许多可能的路径中选择要执行的语句,其中包括 if 、else 和 switch 语句。 if 语句可与 else 结合使用,基于布尔表达式选择不同的路径。语句 switch 根据与表达式的模式匹配要执行的语句列表。

2.1,if 语句

if 语句由一个布尔表达式和一个或多个语句组成。 if 语句是在布尔表达式计算结果为 true 时执行指定的语句部分,计算结果为 false 时则语句结束。借一个示例来讨论 if 语句的语法。

示例如下:

int value = 100; 

if (value < 0 || value > 100)
{
    Console.Write($"{value}小于0或者大于100");
}

if 语句的构成部分:

  • "布尔表达式"计算结果为 true 则执行指定的语句,计算结果为 false 则什么都不执行。

上例中的布尔表达式声明了 int 类型变量 value 是否小于0或大于 100:

(value < 0 || value > 100)
  • if 语句的执行部分由一个或多个语句构成,仅在布尔表达式计算结果为 true 时执行。

上例中的语句执行部分将输出 value 变量:

Console.Write($"{value}小于0或者大于100");

if 语句的流程图:

https://img-blog.csdnimg.cn/95c9508c51be496390893a24f5c03f6c.png#pic_center

2.2,else 语句

else 语句与 if 语句搭配,else 语句在 if 语句的布尔表达式计算结果为 false 时执行。 借一个示例来讨论 else 语句的语法。

示例如下:

int number = 20;

if (number < 20)        // 结果为 true 时执行 
{
    Console.WriteLine("number小于20");
}
else                   // 结果为 false 时执行  
{
    Console.WriteLine("number大于等于20");
} 

else 语句的构成部分:

  • 当 if 语句的布尔表达式为 false 时执行 else 中的一个或多个语句的执行部分。

上例中的 else 语句的执行部分输出 number 变量大于等于20的提示信息:

Console.WriteLine("number大于等于20");

if…else 语句的流程图:

https://img-blog.csdnimg.cn/3a70d75664f44cf69cd1636c57cc2a87.png#pic_center

2.3,switch 语句

switch 语句根据给定的表达式参数与 case 关键字声明的匹配表达式匹配时,对应的匹配模式会执行指定的一个或多个语句的执行部分。以一个示例来说明 switch 语句的语法。

示例如下:

double measurement = 1.1;        // 声明测量值

switch (measurement)    // switch(表达式参数)
{
    // case 匹配表达式 
    case < 0.0:
        Console.WriteLine($"测量值为{measurement},太低了");
        break;
    case > 15.0:
        Console.WriteLine($"测量值为{measurement},太高了");
        break;
    case double.NaN:
        Console.WriteLine("失败的测量值。");
        break;
    default:        // 默认部分
        Console.WriteLine($"测量值为{measurement}.");
        break; 
}

switch 语句的构成部分:

  • 参数表达式部分必须是一个整型或枚举类型,又或者是可以转换为整型或枚举类型的 class 类型。 参数用于与 switch 语句内的 case 语句匹配。

上例的参数表达式部分声明了一个 double 类型的变量 measurement:

double measurement = 1.1;        // 声明测量值

switch (measurement)    // switch(表达式参数)
  • 匹配表达式部分表示一个匹配的条件,使用 case 关键字声明。switch 语句可以有多个 case 语句,当匹配表达式布尔值为 true 时则执行对应的语句部分,若布尔值为 false 时则直接执行下一个匹配部分直到 switch 语句结束。

上例的匹配表达式部分声明了三个 case 语句:

// case 匹配表达式 
case < 0.0:
    //...
case > 15.0:
    //...
case double.NaN:
    //...
  • "执行语句"部分即匹配结果为 true 时执行的语句,注意 C# 不支持从一个 case 标签显式贯穿到另一个 case 标签, 所以在 case 执行语句不为空的情况下需要声明 break 或其它跳转语句。

上例中的执行语句部分输出了 measurement 变量的提示信息和 break 语句 :

case < 0.0:
   Console.WriteLine($"测量值为{measurement},太低了");
    break;
case > 15.0:
    Console.WriteLine($"测量值为{measurement},太高了");
    break;
case double.NaN:
    Console.WriteLine("失败的测量值。");
    break;
  • default 语句是在 switch 语句末尾声明的一个可选的语句,表示在上面所有的 case 匹配结果都不为 true 时执行的语句。 当 switch 语句中的 case 匹配结果都不为 true 且没有 default 语句的时候会直接结束 switch语句。

上例中的 default 语句的执行部分输出 measurement 变量的提示信息和 break 语句:

Console.WriteLine($"测量值为{measurement}."); 
break; 

switch 语句的流程图:

https://img-blog.csdnimg.cn/dfadbcfb40f1434a95ba2552c914ad9e.png#pic_center

3,跳转语句

跳转语句表示可以中断当前程序流,并从一个程序点跳转到另外一个程序点继续执行程序。C# 支持的跳转语句包括 break 语句、continue 语句、return 语句和 goto 语句。

3.1 break 语句

break 语句是将终止当前所在的迭代语句。包括上面所讲到的 for、foreach、while 或 do 语句以及 switch 语句。break 语句可以直接停止迭代语句的执行,并把执行权给后面的程序或者直接结束程序。 以一个示例来演示 break 语句的语法。

示例如下:

int[] numbers = { 1, 2, 3, 4, 5, 6 }; 
        
foreach(int number in numbers)
{
    if(number == 3)
    {
        break;        // 跳出当前 foreach 语句
    }

    Console.WriteLine($"{number}");
}
// 输出: 
// 1 
// 2

break 语句的流程图:

https://img-blog.csdnimg.cn/07bc7829d9c34874aebcec840f9950dc.png#pic_center

3.2 continue 语句

continue 语句与 break 语句不同的是 continue 语句只跳过当前循环直接进入下一次循环,而 break 语句是跳出整个循环。 continue 语句常用于 while 循环和 for 循环中。 以一个示例来演示 continue 语句的语法。

示例如下:

for (int i = 0; i < 5; i++)
{
    Console.Write($"Iteration {i}: ");

    if (i < 3)
    {
        Console.WriteLine("skip");
        continue;
    }

    Console.WriteLine("done");
}

// 输出: 
// Iteration 0: skip
// Iteration 1: skip
// Iteration 2: skip
// Iteration 3: done
// Iteration 4: done

continue 语句的流程图:

https://img-blog.csdnimg.cn/aa37bd0af6554c988ba6e8c5e5279235.png#pic_center

3.3 goto 语句

goto 语句将控制权转交给带有标签的语句,实现程序从一个点跳转到另外一个程序点执行。 以一个示例来理解 goto 语句。

示例如下:

// 局部变量定义 
int a = 10;

LOOP: do
{
    if (a == 15)
    {
        // 直接跳过迭代
        a++;
        goto LOOP;
    }

    Console.WriteLine($"a 的值:{a}");
    a++; 

} while (a < 20);

// 输出: 
/*
    a 的值:10
    a 的值:11
    a 的值:12
    a 的值:13
    a 的值:14
    a 的值:16
    a 的值:17
    a 的值:18
    a 的值:19 
*/

注意无论什么编程语言,都不建议使用 goto 语句。因为 goto 语句使得程序的控制流难以跟踪,使程序难以理解和难以修改。而且任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。(示例中的功能可以使用 continue 语句实现)

goto 语句的流程图:

https://img-blog.csdnimg.cn/4731d2b22c4045b7b17735e78961340c.png#pic_center

3.4 return 语句

return 语句的执行表示函数的结束,并将控制权和函数结果(若有)返回给函数的调用方,在 C# 中 return 语句的返回值的类型必须和函数的返回类型相同 。return 语句是函数的一个可选项,函数中不是一定要有 return 语句。如果函数成员不计算值,则使用不带表达式的 return 语句。 以一个示例来理解 return 语句。

示例如下:

Console.WriteLine("First call:");
DisplayIfNecessary(6);

Console.WriteLine("Second call:");
DisplayIfNecessary(5);

void DisplayIfNecessary(int number)
{
    if (number % 2 == 0)
    {
        return;
    }
    Console.WriteLine(number);
}
// 输出: 
//First call:
//Second call:
//5 

结语

😀以上就是 C# 常用语句的介绍,希望能够对大家有所帮助。望大家多多支持,你们的支持就是笔者创作最大的动力!


文章来源: https://blog.csdn.net/weixin_61361738/article/details/129098822
版权声明: 本文为博主原创文章,遵循CC 4.0 BY-SA 知识共享协议,转载请附上原文出处链接和本声明。


...全文
61 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
基本信息 书名:高等学校计算机应用规划教材:Visual C# 2010程序设计教程 作者: 陈建伟 出版社: 清华大学出版社 页码:326 出版日期:2012-06-01 内容简介   《高等学校计算机应用规划教材:Visual C# 2010程序设计教程》详细介绍了Visual C# 2010程序设计的基础知识、基本方法和应用技巧,共分14章,主要内容包括.NET平台与Visual Studio 2010开发环境、C#语言基础及面向对象程序设计、C#程序设计、C# Web程序设计、C#泛型编程、C#数据库程序设计及ADO.NET等相关知识,并在最后讲解了运用C#处理文件和进行LINQ语言集成查询的内容。   本书的讲述由浅入深、循序渐进,并针对各章知识点附以大量的示例程序和习题。通过本书的学习,读者可以逐步掌握C#程序设计。   本书难度适中,实例丰富,可操作性强,可作为高等学校计算机相关专业的教材或参考用书,也可供广大程序员参考。 目录 第1章.NET平台与Visual Studio开发工具 1.1 Microsoft.NET平台 1.1.1 .NET Framework 4.0概述 1.1.2 理解命名空间 1.2 Visual Studio 2010简介 1.2.1 Visual Studio 2010开发环境概览 1.2.2 菜单栏 1.2.3 工具栏 1.2.4 “属性”及“解决方案资源管理器”面板 1.2.5 其他面板 1.2.6 Visual Studio 2010的新特性 1.3 创建控制台应用程序 1.4 本章小结 1.5 习题 第2章 Visual C# 2010语法基础 2.1 C#语言概述 2.2 C#基础元素 2.2.1 语句 2.2.2 标识符与关键字 2.3 变量 2.3.1 变量的命名 2.3.2 变量的声明和赋值 2.4 数据类型 2.4.1 简单类型 2.4.2 结构类型 2.4.3 枚举类型 2.4.4 引用类型 2.4.5 装箱与拆箱 2.4.6 数据类型的转换 2.5 运算符与表达式 2.5.1 赋值运算符与表达式 2.5.2 关系运算符与表达式 2.5.3 逻辑运算符与表达式 2.5.4 其他运算符与表达式 2.5.5 运算符的优先级 2.6 Visual C# 2010的新特性 2.6.1 大整数类型(Biginteger) 2.6.2 动态数据类型 2.6.3 命名参数和可选参数 2.7 本章小结 2.8 上机练习 2.9 习题 第3章 程序流程控制 3.1 选择结构程序设计 3.1.1 if语句 3.1.2 switch语句 3.2 循环结构程序设计 3.2.1 for语句 3.2.2 for each语句 3.2.3 while语句 3.2.4 do---while语句 3.2.5 跳出循环 3.3 异常处理结构 3.3.1 异常的产生 3.3.2 处理异常 3.4 本章小结 3.5 上机练习 3.6 习题 第4章 数组与集合 4.1 数组 4.1.1 数组的声明 4.1.2 -维数组的使用 4.1.3 多维数组的使用 4.2 集合 4.2.1 集合的定义 4.2.2 集合的使用 4.2.3 常用系统预定义的集合类 4.3 本章小结 4.4 上机练习 4.5 习题 第5章 C#面向对象程序设计基础 5.1 面向对象程序设计概述 5.2 类与对象 5.2.1 类与对象概述 5.2.2 面向对象程序设计相关概念 5.2.3 类的声明与System Object类 5.2.4 对象的声明与类的实例化 5.2.5 类成员 5.2.6 类成员的访问限制 5.2.7 this关键字 5.3 构造函数与析构函数 5.3.1 构造函数 5.3.2 析构函数 5.4 本章小结 5.5 上机练习 5.6 习题 第6章 域、属性与事件 6.1 域 6.1.1 域的初始化 6.1.2 只读域与readonly关键字 6.2 属性 6.2.1 属性的声明 6.2.2 属性的访问 6.3 事件 6.3.1 委托 6.3.2 事件的声明 6.3.3 事件的订阅与取消 6.4 本章小结 6.5 上机练习 6.6 习题 第7章 方法 7.1 方法的声明 7.2 方法的参数 7.2.1 值类型参数传递 7.2.2 引用类型参数传递 7.2.3 输出类型参数传递 7.2.4 数组类型参数传递 7.3 静态方法 7.4 方法的重载 7.5 外部方法 7.6 操作符重载 7.6.1 一元操作符的重载 7.6.2 二元操作符的重载 7.7 本章小结 7.8 上机练习 7.9 习题 第8章 继承与多态 8.1 什么是继承 8.2 使用继承机制 8.2.1 基类和派生类 8.2.2 bas

5,174

社区成员

发帖
与我相关
我的任务
社区描述
微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。
windowsmicrosoft 企业社区
社区管理员
  • 山月照空舟
  • 郑子铭
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

微软技术社区为中国的开发者们提供一个技术干货传播平台,传递微软全球的技术和产品最新动态,分享各大技术方向的学习资源,同时也涵盖针对不同行业和场景的实践案例,希望可以全方位地帮助你获取更多知识和技能。

予力众生,成就不凡!微软致力于用技术改变世界,助力企业实现数字化转型。

试试用AI创作助手写篇文章吧