C# 中循环的应用说明

news2024/10/24 21:31:13

一循环的概念说明

在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(;;) 结构来表示一个无限循环。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树莓派应用--AI项目实战篇来啦-7.OpenCV脸部和眼睛检测

1. 介绍 在深度学习时代&#xff0c;人脸识别一般是利用卷积神经网络进行监督式学习&#xff0c;也就是通过让算法&#xff08;神经网络&#xff09;自己去发现规律的方式&#xff0c;创造出有用的卷积核&#xff0c;然后利用其进行寻找图片和视频中的人脸&#xff0c;而在这之…

【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】

Mac分享吧 文章目录 DBeaverEE 数据库管理工具 软件安装完成&#xff0c;打开效果图片Mac电脑 DBeaverEE 数据库管理工具 软件安装——v24.21️⃣&#xff1a;下载软件2️⃣&#xff1a;安装JDK&#xff0c;根据下图操作步骤提示完成安装3️⃣&#xff1a;安装DBeaverEE&#…

【ESP32】ESP-IDF开发 | LED PWM控制器+呼吸灯例程

1. 简介 LED PWM控制器&#xff0c;简称LEDC&#xff0c;主要用于控制LED的亮度和颜色&#xff0c;当然也可以当作普通的PWM进行使用。 LEDC有16路通道&#xff0c;8路高速通道和8路低速通道&#xff0c;16路通道都能够产生独立的数字波形来驱动LED设备。高速和低速通道分别有8…

C++:模拟stack、queue

目录 容器适配器 定义 特点 deque deque的优势与缺点 选择deque作为stack和queue的底层默认容器的原因 模拟实现stack 模拟实现queue 容器适配器 定义 在C标准模板库&#xff08;STL&#xff09;中&#xff0c;容器适配器&#xff08;Container Adapters&#xff09;是…

Harmony开发基础

背景介绍 鸿蒙系统的开发一来是为了打破国外垄断&#xff0c;实现操作系统的国产化&#xff0c;另一方面是针对目前市场上出现大量新的移动设备&#xff0c;手表&#xff0c;折叠屏等&#xff0c;移动端程序要适配不同设备&#xff0c;需要维护一套代码下的多个版本&#xff0…

U盘直接拔掉之后数据丢失怎么恢复 U盘数据丢失了怎么恢复

U盘作为一种存储设备&#xff0c;可以帮助人们存储很多资料文件&#xff0c;无论是办公文件&#xff0c;亦或是生活中的照片&#xff0c;所以在存储数据文件时&#xff0c;人们是比较依赖U盘。不过&#xff0c;U盘也存在很多的不确定性&#xff0c;比如数据容易丢失、或者损坏。…

NirCmd-sendkeysendkeypress

引入script [Script File] This command allows you to execute a sequence of commands stored inside the file specified in [Script File] parameter. Example: script "c:\temp\msg.ncl" Example for a script:infobox "Hello !" "This is the …

微知-如何查看服务器CPU当前运行主频?(cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq)

关键命令 cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq背景 首先lscpu可以查看到有多个cpu&#xff0c;里面也会显示cpu的频率&#xff0c;但是这里显示仅仅是规格&#xff0c;不是实际值。为了查看实际值&#xff0c;需要到/sys文件系统中查看&#xff0c;也…

大数据-167 ELK Elasticsearch 详细介绍 特点 分片 查询

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ARIMA 模型初体验 —— 预测股票数据

第 1 步&#xff0c;从 twelvedata 上获取苹果 11 号 15:30 到 16:00 的 OHLC、成交量 数据。 第 2 步&#xff0c;编写 Python 代码&#xff08;实际上可以用 R 语言&#xff0c;R 语言从语言的级别对分析预测提供了支持&#xff0c;而 Python 需要第三方库&#xff09;。 …

Yolov8 搭配 Frequency-aware Feature Fusion for Dense Image Prediction

个人觉得论文赞的地方 https://github.com/Linwei-Chen/FreqFusion https://www.arxiv.org/abs/2408.12879 因为我有个项目需要训练边界模糊的情况,但又需要目标能在模糊里凸显出来,就是看到这张图以后觉得很赞,边界变得清晰有特征是我想要的,所以尝试用了 使后感 哈哈…

【CSS3】css开篇基础(2)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

数据结构-5.2.树的性质

一.树的常考性质&#xff1a; 性质1&#xff1a;结点数 总度数 1(结点的度&#xff1a;结点分支的数量) 一个分支中&#xff0c;如父结点B&#xff0c;两个子结点为E和F&#xff0c;结点B的度的值为2&#xff0c;等于子结点数量&#xff0c;加上这一个父结点(父结点只能有一…

【计算机网络 - 基础问题】每日 3 题(三十九)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞…

大型语言模型(LLMs)关键技术指南

在AI这个超火的领域&#xff0c;打好基础真的超级重要&#xff0c;尤其是当你开始研究那些超大型的语言模型&#xff0c;也就是LLMs的时候。这个指南就是想帮新手们把那些听起来高大上的概念变得简单易懂&#xff0c;比如神经网络、自然语言处理&#xff08;NLP&#xff09;还有…

【ROS2实操一】话题通信与自定义消息

一、准备工作 1.请先创建工作空间 mkdir -p ws01_plumbing/src //创建工作空间 colcon build //在工作空间目录下编译 2.创建专门的接口功能包定义接口文件(需要注意的是&#xff0c;目前为止无法在Python功能包中定义接口文件)&#xff0c;终端下进…

线程基础学习

线程的实现 通过实现Runnable接口的方式&#xff0c;实现其中的run方法。继承Thread类&#xff0c;然后重写其中的run方法。通过线程池创建线程&#xff0c;默认采用DefaultThreadFactory。有返回值的callable&#xff0c;实现callable接口&#xff0c;实行call方法。 本质上…

wait和waitpid

在Linux中&#xff0c;wait 和 waitpid 是用于进程控制的系统调用&#xff0c;它们主要用来让父进程等待子进程的终止&#xff0c;并获取子进程的退出状态。下面详细介绍它们的用法和区别。 1. wait() 函数 wait() 会阻塞调用进程&#xff0c;直到一个子进程终止。它的典型用…

怎么ping网络ip地址通不通

怎么Ping网络IP地址通不通&#xff1f;要检查网络中的IP地址是否连通&#xff0c;可以使用‌Ping命令。Ping命令通过发送ICMP&#xff08;Internet Control Message Protocol&#xff0c;因特网控制消息协议&#xff09;Echo请求报文并等待回应&#xff0c;来判断目标主机是否可…

ARP限制网速攻击

ARP限制网速攻击 大家没想到吧&#xff0c;ARP还能限制对方网速。当kali欺骗了网关和受害者的时候&#xff0c;受害者访问网络就需要经过kali的网卡&#xff0c;那我们限制kali网卡的速度或者转发的速度就可以限制对方的网速。这里可以使用的工具有tc、iptables、WonderShaper…