C# 中循环的应用说明

一循环的概念说明

在C#编程中,循环结构是一种非常重要的控制流语句,它允许我们重复执行一段代码,直到满足某个特定条件为止。C#提供了几种不同类型的循环结构,包括for循环、while循环、do-while循环和foreach循环。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

循环结构

二、循环类型

在C#中,循环结构扮演着至关重要的角色,它们控制着代码的执行流程,确保特定的任务被反复执行,直到满足特定的条件。下面,我们将对C#中的几种主要循环类型进行详细探讨。

循环类型描述
for循环for循环用于在指定次数内重复执行一段代码。
while循环while循环在给定条件为真时,会重复执行其中的语句或语句组。在执行循环主体之前,会先对条件进行测试。
do…while循环do…while循环会先执行一次循环体,然后检查条件。如果条件为真,循环会继续执行,直到条件变为假。
foreach循环foreach循环是遍历数组或集合中每个元素的简便方式。它会自动处理索引和迭代过程,让你能够更专注于处理集合中的元素。
嵌套循环嵌套循环允许你在一个循环内部使用另一个或多个循环,从而构建出更复杂的控制流程。这种结构在处理多维数组或进行更复杂的计算时特别有用。

2.1.For循环

for循环是C#中最为常用的循环结构之一,当你知道需要重复执行某个代码块的次数时,for循环是一个很好的选择。

for (int i = 0; i < 10; i++)
{
    Console.WriteLine("第 " + (i + 1) + " 次循环");
}

在上面的代码中,首先声明了一个名为i的整数变量,并将其初始化为0。然后,指定了一个条件i < 10,只要这个条件为真,循环就会继续执行。在每次循环结束时,我们都会将i的值增加1,这是通过i++这个递增运算符实现的。在循环体内,使用Console.WriteLine方法输出了一条消息,显示了当前是第几次循环。

2.2. while循环

while循环与for循环类似,但它没有内置的迭代机制,需要自己编写代码来更新循环控制变量。

int i = 0;
while (i < 10)
{
    Console.WriteLine("第 " + (i + 1) + " 次循环");
    i++;
}

在这个例子中,首先声明了一个名为i的整数变量,并将其初始化为0。然后,编写了一个while循环,只要i的值小于10,就会执行循环体中的代码。在循环体内,我们输出了一条消息,并将i的值增加1。这样,当i的值达到10时,循环就会停止。

2.3. do-while循环

do-while循环与while循环非常相似,但有一个重要的区别:它至少会执行一次循环体。

int i = 0;
do
{
    Console.WriteLine("第 " + (i + 1) + " 次循环");
    i++;
} while (i < 10);

在这个例子中,首先声明了一个名为i的整数变量,并将其初始化为0。然后,编写了一个do-while循环。与while循环不同的是,do-while循环会先执行一次循环体中的代码,然后再检查条件是否为真。如果条件为真,则继续执行循环体;否则,循环结束。在这个例子中,无论i的初始值是多少,循环体都会至少执行一次。

2.4. foreach循环

foreach循环是遍历数组或集合中每个元素的最佳方式。它会自动处理索引和迭代过程,从而能够更专注于处理集合中的元素。

int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
    Console.WriteLine("当前元素是:" + number);
}

在这个例子中,创建了一个包含五个整数的数组numbers。然后,使用foreach循环遍历数组中的每个元素,并将每个元素的值输出到控制台。在循环体内,直接访问了当前元素的值,而无需关心其索引或位置,这使得代码更加简洁易读。

2.5. 嵌套循环

嵌套循环允许在一个循环内部使用另一个循环,这种结构在处理二维数组、矩阵或需要多次迭代的复杂算法时特别有用。以下是一个使用for循环进行嵌套的示例:

for (int i = 0; i < 3; i++)
{
    for (int j = 0; j < 3; j++)
    {
        Console.Write($"({i}, {j}) ");
    }
    Console.WriteLine(); // 换行
}

这个示例将输出一个3x3的网格,其中包含从(0, 0)到(2, 2)的坐标对。

三、循环控制语句

在C#中,除了循环结构本身外,循环控制语句也扮演着重要的角色,用于改变循环的执行流程。这些语句主要包括breakcontinue以及goto(尽管在现代编程实践中,由于可能降低代码的可读性和可维护性,goto语句并不被推荐使用)。

循环控制语句的主要功能是改变程序执行的常规顺序,当程序离开一个作用域时,该作用域内创建的所有局部自动变量对象都将被销毁。C#提供了以下循环控制语句:

控制语句描述
break用于终止循环或switch语句的执行,并继续执行紧接着循环或switch语句之后的下一条语句。
continue用于跳过当前循环迭代的剩余部分,并立即开始下一轮循环的测试条件。
goto(不推荐使用)该语句无条件地跳转到程序中的指定标签位置。

 3.1. break语句

break语句用于立即终止最内层循环的执行,当在循环中遇到break语句时,程序将跳过循环的剩余迭代,并继续执行循环之后的代码。以下是一个示例:

for (int i = 0; i < 10; i++)
{
    if (i == 5)
    {
        break; // 当i等于5时,终止循环
    }
    Console.WriteLine(i);
}

这个示例将输出数字0到4,然后由于break语句的作用,循环将终止,不会输出5到9。

3.2. continue语句

continue语句用于跳过当前循环迭代的剩余部分,并立即开始下一次迭代。以下是一个示例:

for (int i = 0; i < 10; i++)
{
    if (i % 2 == 0) // 如果i是偶数
    {
        continue; // 跳过当前迭代
    }
    Console.WriteLine(i);
}

这个示例将输出数字1到9之间的奇数,因为当i是偶数时,continue语句会跳过Console.WriteLine(i);的执行,并立即开始下一次迭代。通过理解这些循环结构和控制语句,可以编写出更加高效和灵活的C#代码来处理重复的任务和复杂的逻辑。

四、无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环,示例代码

for (;;)
{
    // 循环体,这里的代码将无限次地执行
    Console.WriteLine("这是一个无限循环的示例");

    // 通常在某个条件下会有break语句来退出循环,但在这个例子中我们省略了
    // 例如:
    // if (someCondition)
    // {
    //     break;
    // }
}
 

当条件表达式不存在时,它被假设为真,也可以设置一个初始值和增量表达式,但是一般情况下,程序员偏向于使用 for(;;) 结构来表示一个无限循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【华为HCIP实战课程十一】OSPF网络NBMA网络解决方案,网络工程师

上节我们讲解了DR DBR 选举,每台设备可以学到全网路由,但是通信是有问题的 DR BDR的选举是基于接口的,而不是基于路由器的 一、OSPF路由通信问题 R5虽然可以学到全网的OSPF路由,但是R5无法ping通44.1.1.1 原因是R5到达R4 lo0的下一跳是10.1.1.4, 而R5和R4直连无法ping通…

40款主流的AI工具集盘点,这些好用的AI软件一定要知道!

AI工具哪款好&#xff0c;有哪些值得推荐&#xff1f; 不可否认&#xff0c;当下各式各样的AI工具层出不穷&#xff0c;面对不断涌现的AI工具&#xff0c;各位在选用时是否无从下手&#xff0c;或是抽不出时间&#xff0c;逐一体验对比不同AI工具的差异…… 这也是现如今许多…

根据PFX证书文件合成Nginx所需的SSL证书

具体步骤如下&#xff1a; 1、安装openssl 工具地址&#xff1a;http://slproweb.com/products/Win32OpenSSL.html 并配置环境变量。 2、生成证书 &#xff08;1&#xff09;以管理员身份运行cmd&#xff0c;进入到pfx文件的目录&#xff1a; &#xff08;2&#xff09;根据…

一款零依赖、跨平台的流媒体协议处理工具,支持 RTSP、WebRTC、RTMP 等视频流协议的处理

大家好&#xff0c;今天给大家分享一款功能强大的流媒体协议处理工具go2rtc&#xff0c;支持多种协议和操作系统&#xff0c;具有零依赖、零配置、低延迟等特点。 项目介绍 go2rtc可以从各种来源获取流&#xff0c;包括 RTSP、WebRTC、HomeKit、FFmpeg、RTMP 等&#xff0c;并…

Cherno游戏引擎笔记(73~90)

------- scene viewport ---------- 》》》》做了两件事&#xff1a;设置视口和设置相机比例 》》》》为什么要设置 m_ViewportSize 为 glm::vec2 而不是 ImVec2 ? 因为后面需要进行 ! 运算&#xff0c;而 ImVec2 没有这个运算符的定义&#xff0c;只有 glm::vec2 有这个运算…

atcoder abc375

A seats 代码&#xff1a; #include <bits/stdc.h> using namespace std;int main() {int n;cin >> n;vector<char> a(n 1);for(int i 1; i < n; i ) cin >> a[i];int cnt 0;for(int i 1; i < n - 2; i ) {if(a[i] # && a[i 1…

LeetCode刷题日记之回溯算法(五)

目录 前言重新安排行程N皇后解数独总结 前言 今天是学习回溯算法的第五天&#xff0c;我们继续来一起学习回溯算法蕴含的逻辑处理&#xff0c;希望博主记录的内容能够对大家有所帮助 &#xff0c;一起加油吧朋友们&#xff01;&#x1f4aa;&#x1f4aa;&#x1f4aa; 重新安…

IDEA中git如何快捷的使用Cherry-Pick功能

前言 我们在使用IDEA开发时&#xff0c;一般是使用GIT来管理我们的代码&#xff0c;有时候&#xff0c;我们需要在我们开发的主分支上合并其他分支的部分提交代码。注意&#xff0c;是部分&#xff0c;不是那个分支的全部提交&#xff0c;这时候&#xff0c;我们就需要使用Che…

重学SpringBoot3-集成Spring Boot Actuator

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-集成Spring Boot Actuator 1. 什么是 Spring Boot Actuator&#xff1f;2. Spring Boot Actuator 的核心功能3. Spring Boot 3 中集成 Actuator3.1 添加…

RBTree(红黑树)的介绍和实现

欢迎来到杀马特的主页&#xff1a;羑悻的小杀马特.-CSDN博客 目录 ​编辑 一红黑树介绍&#xff1a; 1.1红黑树概念&#xff1a; 1.2红黑树遵循的原则&#xff1a; 1.3红黑树效率分析&#xff1a; 二.红黑树的实现&#xff1a; 2.1红黑树结构&#xff1a; 2.2红黑树节点…

PAT甲级-1127 ZigZagging on a Tree

题目 题目大意 给出一棵树的中序和后序遍历&#xff0c;要求按层序输出这棵树&#xff0c;但是按照从左到右&#xff0c;再从右到左&#xff0c;再从左到右的顺序。 思路 由中序遍历和后序遍历可以构造出一棵二叉树。观察题目中要求的输出顺序&#xff0c;发现层数为奇数的都…

第十五章 RabbitMQ延迟消息之延迟插件

目录 一、引言 二、延迟插件安装 2.1. 下载插件 2.2. 安装插件 2.3. 确认插件是否生效 三、核心代码 四、运行效果 五、总结 一、引言 上一章我们讲到通过死信队列组合消息过期时间来实现延迟消息&#xff0c;但相对而言这并不是比较好的方式。它的代码实现相对来说比…

等保制度要求企业保障数据存储安全,天锐绿盾强大加密技术实现文档防泄密

网络安全等级保护&#xff08;等保&#xff09;制度是我国信息安全保障工作的基本制度和基本国策&#xff0c;是开展信息安全工作的基本方法&#xff0c;是促进信息化、维护国家信息安全的基本保障。等保不仅是对网络&#xff08;含信息系统、数据&#xff09;实施分等级保护、…

TypeScript数据类型限定(基本数据类型,void,数组,元组,枚举,any,unknown,never,函数,自定义数据类型,联合类型和交叉类型)

一、安装解析ts的工具包 node.js只认识js代码&#xff0c;不认识ts代码。 需要将ts代码转化为js&#xff0c;然后就可以在node.js中运行了。 安装步骤&#xff1a;打开终端&#xff0c;输入命令npm i -g typescript回车 typescript是用来解析ts的工具包。提供了tsc命令&…

基于SpringBoot+Vue+Uniapp微信小程序快递管理系统(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

量化策略交易之PTrade量化软件如何获取逐笔委托行情!get_individual_entrust

get_individual_entrust– 获取逐笔委托行情 get_individual_entrust(stocksNone, data_count50, start_pos0, search_direction1, is_dictFalse) 使用场景 该函数在交易模块可用 接口说明 该接口用于获取当日逐笔委托行情数据。 注意事项&#xff1a; 1、沪深市场都有逐…

C++,STL 033(24.10.15)

内容 queue容器&#xff08;队列&#xff09;的常用接口。 代码 #include <iostream> #include <string> #include <queue> // 注意包含queue容器&#xff08;队列&#xff09;的头文件using namespace std;class Person { public:string m_Name;int m_Age…

Android targetSdkVersion 升级为34 问题处理

原因是发布到GooglePlay遭到拒绝&#xff0c;需要最低API level为34。之前为31&#xff0c;感觉还挺高的&#xff0c;但是GooglePlay需要的更高。 记录下处理问题&#xff1a; 1.升级gradle版本为8.0.2 之前是&#xff1a; classpath com.android.tools.build:gradle:7.1.0-…

【C语言】数据类型

C语言常用数据类型 int 整型 4字节float 浮点型 4字节double 双精度浮点类型 8字节char 字符型 1字节构造类型&#xff1a;数组&#xff08;多个相同类型的变量组合&#xff09;构造类型&#xff1a;结构体&#xff08;多个不同类型的变量组合&#xff09; #include <stdi…

react18+react-transition-group实现路由切换过度

效果如下 官网安装对应的插件 创建对应的样式 .fade-enter {opacity: 0; } .fade-exit {opacity: 1; } .fade-enter-active {opacity: 1; } .fade-exit-active {opacity: 0; } .fade-enter-active, .fade-exit-active {transition: opacity 500ms; }const location useLoca…