for和foreach有什么区别?for和foreach循环的主要区别是什么?在什么情况下我们可以使用而不是foreach,反之亦然。可以用一个简单的程序来演示吗?两者在我看来都一样。我分不清他们。for循环是一种表示“执行此n.次”的结构。foreach循环是一种结构,表示“为此IEnumerable中的每个值/对象执行此操作”如果要迭代的对象实现IEnumerable接口,则可以使用foreach。如果只能通过索引访问对象,则需要使用for。我将尝试以更一般的方式回答这个问题:foreach用于以预定义的方式迭代给定集合或列表(任何实现IEnumerable的元素)的每个元素。您不能影响确切的顺序(除了跳过条目或取消整个循环),因为这是由容器决定的。foreach(Stringlineindocument){//遍历“document”的所有元素作为字符串对象Console.Write(line);//printtheline}for是另一种编写循环的方法,在进入循环之前执行代码,每次迭代后执行一次。它通常用于循环代码给定的次数。与foreach相比,您可以影响当前位置。始终使用foreach而不是for(inti=0,j=0;iifpossibleandapplicable(assumingsomearrayindexing)。根据内部数据组织,foreach可能比使用索引更快(尤其是在使用链表时)很多。大家对foreach都给出了正确的答案,一方面是循环遍历实现了IEnumerable的元素的方法。另一方面,因为它比其他答案显示的更灵活。其实只要指定condition如果为真,for用于执行语句块。来自Microsoft文档:for(initialization;test;increment)statementInitializationisrequired.anexpression.此表达式仅在循环执行前执行一次。需要测试。布尔值表达。如果测试为真,则执行该语句。如果测试为假,则循环终止。需要增加。一种表达。增量表达式在每个循环结束时执行。声明是可选的。如果测试为真,则执行该语句。可以是复合语句。这意味着您可以通过多种不同方式使用它。经典的学校例子是1到10之间的数字之和:intsum=0;for(inti=0;i但你也可以用它来对数组中的数字求和:int[]anArr=newint[]{1,1,2,3,5,8,13,21};intsum=0;for(inti=0;i(这也可以用foreach来完成):int[]anArr=newint[]{1,1,2,3,5,8,13,21};intsum=0;foreach(intanIntinanArr)sum=sum+anInt;但你可以将它用于从1到10的偶数:intsum=0;for(inti=0;i你甚至可以发明这样疯狂的东西:inti=65;for(strings=string.Empty;s!="ABC";s=s+Convert.ToChar(i++).ToString());Console.WriteLine(s);forloop:1)需要指定循环边界(最小值或最大值)。2)重复执行语句或语句块,直到指定表达式的计算结果为false。EX1:–intK=0;for(intx=1;xforeachstatement:1)不需要指定循环边界的最小值或最大值。2)为a)数组中的每个元素或b)对象集合重复一组嵌入语句。EX2:-intk=0;int[]tempArr=newint[]{0,2,3,8,17};foreach(intiintempArr){k=k+i;如果您有数组或其他IEnumerable数据集合,foreach很有用,但可用于访问可通过索引访问的数组元素。当您提前指示或确定循环将运行多少次时,for循环很有用。例如,如果您需要为一周中的每一天执行一个过程,您知道需要7个循环。foreach循环是当您想对集合或数组的所有部分重复该过程时,但循环运行多少次并不重要。例如,您想要为用户格式化收藏书籍列表。每个用户可能有不同数量的书,或者没有书,我们不关心它有多少,我们只希望循环作用于所有的书。foreach几乎等同于:varenumerator=list.GetEnumerator();变量元素;while(enumerator.MoveNext()){element=enumerator.Current;}而要实现“foreach”兼容模式,您需要提供一个带有GetEnumerator()方法的类,该类返回一个带有MoveNext()方法、Reset()方法和Current属性的对象。事实上,您不需要实现IEnumerable和IEnumerator。这取决于你在做什么,以及你需要什么。如果您正在迭代一组项目,并且不关心索引值,则foreach更方便、更易于编写且更安全:您不会得到错误的项目数。例如,如果您需要处理集合中的每两个项目,或者以相反的顺序处理它们,那么for循环是唯一的方法。最大的区别是foreach循环依次处理集合中每个元素的实例,而for循环可以处理任何数据,不局限于集合元素。这意味着for循环可以修改集合——这是非法的,并且会导致foreach循环出错。有关详细信息,请参阅MSDN:foreach和forC#中for和foreach循环的主要区别在于其工作方式:for循环:for循环的变量始终只是一个整数。For循环重复执行语句或语句块,直到指定表达式的计算结果为false。在for循环中,我们必须指定循环的边界(最大或最小)。----->我们可以说这是for循环的极限。foreach循环:在foreach循环的情况下,循环的变量与数组下的值是同一类型。Foreach语句为数组或对象集合中的每个元素重复一组嵌入式语句。在foreach循环中,您不需要为循环边界指定最小值或最大值。-->这里可以说,这就是各个循环的优点。for和foreachfor循环之间的简单区别是使用值。它必须有条件,然后递增和初始化。你必须了解“循环重复了多少次”。foreach正在处理对象和枚举器。无需知道循环重复了多少次。您可以将foreach用于简单数组int[]test={0,1,2,3,...};当你有一个二维数组时,你可以使用forint[][]test={{1,2,3,4},{5,2,6,5,8}};foreach语法快速简单。语法有点复杂,但也更灵活。foreach在遍历集合中的所有项目时很有用。for在遍历整个项目或项目的子集时很有用。提供每个集合项的foreach迭代变量是只读的,因此我们无法在迭代时修改项。使用for语法,我们可以根据需要修改项目。底线——使用foreach快速遍历集合中的所有项目。用于迭代集合项的子集或在迭代时修改项。foreach语句为实现System.Collections.IEnumerable或System.Collections.Generic.IEnumerable接口的数组或对象集合中的每个元素重复一组嵌入式语句。foreach语句用于迭代集合以获取所需的信息,但它不能用于在源集合中添加或删除项目,以避免不可预测的副作用。如果需要在源集合中添加或删除项目,请使用for循环。以上就是C#学习教程:for和foreach有什么区别?如果分享的所有内容对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
