首页 > 其他分享 >遍历用for还是foreach?

遍历用for还是foreach?

时间:2024-02-20 12:33:17浏览次数:23  
标签:遍历 还是 迭代 索引 循环 foreach 集合

在C#中,forforeach都是用来遍历集合或数组的常见循环结构。每种循环都有其适用的场景和优缺点。下面我们将通过一些例子来详细比较这两种循环。

1. 使用for循环

for循环在C#中通常用于需要明确控制循环次数或需要访问集合索引的场景。

int[] numbers = { 1, 2, 3, 4, 5 };

// 使用for循环遍历数组,并打印每个元素及其索引
for (int i = 0; i < numbers.Length; i++)
{
    Console.WriteLine($"Index: {i}, Value: {numbers[i]}");
}

// 使用for循环创建从0到9的序列
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}

优点:

  • 可以控制循环的开始和结束。
  • 可以访问集合的索引或迭代器。
  • 适用于需要执行固定次数操作的场景。

缺点:

  • 语法相比foreach更繁琐。
  • 对于只需要遍历集合元素的场景,可能不够简洁。

2. 使用foreach循环

foreach循环在C#中用于遍历集合或数组中的每个元素,而不需要关心索引或迭代器。

int[] numbers = { 1, 2, 3, 4, 5 };

// 使用foreach循环遍历数组,并打印每个元素
foreach (int number in numbers)
{
    Console.WriteLine(number);
}

// 使用foreach循环遍历字符串中的每个字符
string text = "Hello, World!";
foreach (char c in text)
{
    Console.Write(c);
}

优点:

  • 语法简洁,易于阅读。
  • 专注于集合中的元素,而不是索引。
  • 适用于只需要访问集合元素的场景。

缺点:

  • 无法在循环中直接修改集合的大小(例如,添加或删除元素),这可能会导致异常。
  • 无法直接访问元素的索引或迭代器。

选择哪种遍历方法?

在C#中,选择for还是foreach循环取决于你的具体需求:

  • 如果你需要控制循环的迭代次数,或者需要访问集合的索引或迭代器,那么for循环是更好的选择。
  • 如果你只是想要遍历集合中的元素,而不需要关心索引或迭代器,并且不会在循环中修改集合的大小,那么foreach循环是更简洁和直观的选择。

总的来说,forforeach循环在C#中都有各自的适用场景。选择哪种循环结构取决于你的具体需求,包括是否需要控制循环次数、是否需要访问索引或迭代器,以及是否会在循环中修改集合。

标签:遍历,还是,迭代,索引,循环,foreach,集合
From: https://www.cnblogs.com/lzhdim/p/18022850

相关文章

  • 互联网世界中有一个著名的说法:“你永远不知道网络的对面是一个人还是一条狗!”
    外研版新教材高一英语unit4《AClickForA Friend?》中出现了这一句话——OntheInternet,nobodyknowsyou'readog.这句话到底是什么意思?它的出处是什么呢? 《纽约客》1993年7月5日刊登的一则由彼得·施泰纳(PeterSteiner)创作的漫画的标题而变得流行。这则漫画中有两只狗......
  • KY148 还是畅通工程C++
    求图的最小生成树。克鲁斯卡尔算法来解决。就是选择n-1条最小边且无回路。回路判断用并查集就行。即要加入的边(两个节点)具有相同的父节点说明如果这两个节点本来就存在路径,再加入一条边就会产生回路,舍去。#include<iostream>#include<algorithm>usingnamespacestd;struc......
  • 代码随想录算法训练营第十八天 | 112. 路径总和,113. 路径总和ii ,106.从中序与后序遍
     513.找树左下角的值 已解答中等 相关标签相关企业 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层最左边 节点的值。假设二叉树中至少有一个节点。 示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,n......
  • N叉树遍历模板
    N叉树(N-aryTree)的类型和代码模板与二叉树有些相似,但由于N叉树具有多个子节点,因此在遍历和节点定义上有所不同。以下是N叉树的类型和相应的代码模板:N叉树节点的定义:classNode:def__init__(self,val=None,children=None):self.val=valself.children......
  • 代码随想录算法训练营第十五天 | 层次遍历 | 101. 对称二叉树 | 226.翻转二叉树
    226.翻转二叉树 已解答简单 相关标签相关企业 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例1:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例2:输入:root=[2,1,3]输出:[2,3,1]示例3:输入:root=[]输出:[......
  • 力扣递归 广度优先搜索之102. 二叉树的层序遍历
    classSolution{   List<List<Integer>>result=newArrayList<>();   publicList<List<Integer>>levelOrder(TreeNoderoot){       if(root==null){           returnresult;       }       traverse(root,0);    ......
  • (18/60)找树左下角的值、路径总和、从中序与后序遍历构造二叉树
    找树左下角的值leetcode:513.找树左下角的值层序迭代法思路层序遍历,每次更新result为每层最左侧元素。复杂度分析时间复杂度:遍历,O(N)。空间复杂度:队列层序遍历,树*似完全二叉树时O(N),树极倾斜时O(logN)。注意点略代码实现/***Definitionforabinarytreenode.......
  • windows下c++遍历各个磁盘的所有文件,不知道为什么FindFirstFileA文件会报错,进而程序退
    下面的程序还有一些问题,比如360的一些目录就用FindFirstFileA函数打开错误;还有  C:\Windows\System32\WebThreatDefSvc ,属性只有 DIRECTORY,用函数 _access检查也没有问题,但是就是用FindFirstFileA打开的时候错误;至今没有想到解决办法,只能临时跳过这种目录。 #include......
  • 二叉树遍历问题模板
    在二叉树遍历问题中,有三种常见的遍历方式:前序遍历、中序遍历和后序遍历。以下是这三种遍历方式的递归模板:1.前序遍历(PreorderTraversal):defpreorderTraversal(root):ifnotroot:return[]result=[]result.append(root.val)#处理当前节点......
  • 二叉树层次建树+遍历
    1.BiTree层次建树实现使用二叉树的链式存储,必须要构造一个辅助链式队列,用pcur遍历树结点,实现代码如下:代码实现//二叉树层次建树+画图2024-02-12#include<iostream>#include<cstdio>usingnamespacestd;//树结点的数据结构typedefcharElemType;typedefstructT......