彻底搞懂 for、while、do...while

简介: 彻底搞懂 for、while、do...while

在C#中,我们有四种循环结构,分别是for、foreach、do、while,并且它们在程序设计中有着不同的用途。


for循环


for循环重复执行语句,直到指定的条件不再满足为止。for循环包含三个表达式,分别是表达式1、表达式2和表达式3。表达式1用于初始化循环计数器,表达式2为循环的条件,表达式3用于在每次循环结束时更新循环计数器。


for循环的基本语法如下:

for(<表达式1>;<表达式2>;<表达式3>) { //循环体 }


例如:


for(int i=0;i<10;i++) { Console.WriteLine(i); }


上述代码段会输出0到9的数字。


foreach循环


foreach是一个用于遍历集合类对象的循环语句,foreach循环可用于访问数组和集合类型的元素,遍历数组和集合中的元素。


foreach循环的基本语法如下:

foreach( Type identifier in expression ) { //循环体 }


例如:

int[] arr = { 1, 2, 3, 4, 5 }; foreach( int i in arr ) { Console.WriteLine(i); }


上述代码段会输出1到5的数字。


do循环


do循环和while循环非常相似,只不过do循环语句块中的语句至少会被执行一次。do循环主要用于在循环开始之前执行一些必要的操作。

do循环的基本语法如下:

do { //循环体 } while ()


例如:

int i = 0; do { Console.WriteLine(i); i++; } while(i<5);

上述代码段会输出0到4的数字。


while循环


while循环重复执行语句,只要指定的条件为true。while循环使用非常广泛,当我们想要在某些特定条件下执行代码块时,在条件不成立之前就会一直循环执行。


while循环的基本语法如下:

while () { //循环体 }

例如:

int i = 0; while(i < 5) { Console.WriteLine(i); i++; }


上述代码段会输出0到4的数字。


除了以上介绍的基本语法,这里还需要注意以下几点:


for循环和while循环都需要在循环体内部控制循环变量的变化,否则会导致死循环。

例如:

int i = 0; while(i<5) { Console.WriteLine(i); }


上述代码段没有循环体内部的i++语句,会导致i始终为0,导致死循环。


for循环和foreach循环中,表达式1可省略。如果省略表达式1,意味着在进入循环之前不需要初始化循环变量。


例如:

int[] arr = { 1, 2, 3, 4, 5 }; for(int i=0 ; i<arr.Length ; ) { Console.WriteLine(arr[i]); i += 2; }


上述代码段省略了for循环的表达式1,直接从0开始循环,实现了遍历数组元素并输出两次。


while和do循环中的循环条件必须有所改变,否则会导致死循环。

例如:

int i = 0; while(i<5) { Console.WriteLine(i); }


上述代码段没有对i进行修改,每次循环条件都是true,导致死循环。正确的写法应该是将i在循环体内进行修改。


continue和break关键字可以用于控制循环体的流程。


continue:当执行到continue语句时,会跳过当前循环中的其余语句,并立即进行下一次循环迭代。

例如:

for(int i=0;i<10;i++) { if(i%2 == 0) { continue; } Console.WriteLine(i); }

上述代码段会输出1,3,5,7,9。

break:当执行到break语句时,会立即退出该循环,不再执行该循环之后的语句。

例如:

for(int i=0;i<10;i++) { if(i == 5) { break; } Console.WriteLine(i); }


上述代码段会输出0,1,2,3,4。


在循环体中可以定义一个变量来控制循环次数。

例如:

int i = 0; while(i<5) { int j = i; while(j<5) { Console.WriteLine(j); j++; } i++; }


上述代码段定义了一个变量j来控制内层循环的次数,通过改变i和j的值来实现双层循环输出数字。

如果循环体中只有一条语句,并且不需要在循环体中控制变量,则可以省略花括号。


例如:

for(int i=0;i<5;i++) Console.WriteLine(i);


上述代码段中省略了for循环的花括号。


总之,for、foreach、while和do循环是C#中最常见的循环结构,它们都有各自的用途和优劣点,我们需要根据具体的任务需求来选择使用哪种循环结构。在实际编程中,我们需要注意循环条件和循环变量的控制,避免出现死循环和陷入无限循环的问题。


相关文章
|
4天前
|
JavaScript 前端开发
【面试题】这道 JS 经典面试题不要背!今天帮你彻底搞懂它
【面试题】这道 JS 经典面试题不要背!今天帮你彻底搞懂它
|
6月前
|
机器学习/深度学习 人工智能 运维
10 分钟搞懂 LLMOps
10 分钟搞懂 LLMOps
421 0
|
6月前
|
人工智能 网络协议 算法
5 分钟搞懂 ECN
5 分钟搞懂 ECN
672 0
|
4天前
|
JavaScript 前端开发
【面试题】这道 JS 经典面试题不要背,今天帮你彻底搞懂它!
【面试题】这道 JS 经典面试题不要背,今天帮你彻底搞懂它!
|
4天前
|
SQL 关系型数据库 MySQL
搞懂connectTimeout和socketTimeout的区别
搞懂connectTimeout和socketTimeout的区别
76 0
|
6月前
|
人工智能 安全 Cloud Native
5 分钟搞懂 NESAS
5 分钟搞懂 NESAS
63 0
|
10月前
|
Kubernetes 并行计算 负载均衡
一文搞懂 K3D
Hello folks,作为一款由 Google 开发的开源平台,Kubernetes 主要用于自动部署、资源扩展、管理以及编排容器化应用程序。其不仅是提供了一个简单的系统,用于管理跨多个服务器的容器,同时,具备出色的负载平衡和资源分配能力,以确保每个应用程序能够以最佳性能运行。
497 0
leetcode14(弄懂了一个知识点)
这个题有一点细节,所以就记录一下(可能不一定准确)
57 0
|
存储 文字识别 安全
一文搞懂SDIO
SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。
|
JavaScript Java API
都2022年了你不会还没搞懂this吧
在JS中`this`的绑定规则有`默认绑定`、`隐式绑定`、`显示绑定`、`new绑定`四种。绑定的优先级依次是 `new 绑定 > 显式绑定 > 隐式绑定 > 默认绑定`,下面我们来一一探讨。
58 0
http://www.vxiaotou.com