概述
foreach是一种语法糖,用来简化对可枚举元素的遍历代码。而被遍历的类通过实现IEnumerable接口和一个相关的IEnumerator枚举器来实现遍历功能。
在foreach语句中有两个限制,第一不能修改枚举成员,其次不要对集合进行删除操作。也就是如下两种方式都是错误的。
// Use "foreach" to loop an arraylist
foreach( int i in arrInt )
{
i++;//Can't be compiled
Debug.WriteLine( i.ToString() );
}
// Use "foreach" to loop an arraylist
foreach( int i in arrInt )
{
arrInt.Remove( i );//It will generate error in run-time
Debug.WriteLine( i.ToString() );
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestForeach : MonoBehaviour
{
void Start()
{
GoTestForeach();
}
private void GoTestForeach()
{
Debug.Log("start foreach 空数组的遍历");
var array = new List<string>();
//注意区分:空数组是指元素个数为0,数组为空是指数组变量本身为null
foreach(var item in array)
{
//这里数组array变量不为空,只是元素个数为0,在遍历时不会报空。
Debug.Log(item);
}
//foreach语句中不能修改枚举成员
var array2 = new List<string> { "", "1", "2", "3" };
foreach(var item in array2)
{
Debug.Log(item);
array2.Remove("1");
Debug.Log(item);
}
}
}
那么对于如上两个操作,可以用for来实现,此外这里多说一句,就是对于一个记录集的多条数据删除问题,也是经常出现问题的地方(论坛上经常问类似的问题),由于在一些记录集中进行删除的时候,在删除操作之后相应的索引也发生了变化,这时候的删除要反过来进行删除,大致形式如下。
// Use "for" to loop an arraylist
for( int i = arrInt.Count - 1; i >=0; i-- )
{
int n = ( int ) arrInt[i];
if( n == 5 )
arrInt.RemoveAt( i ); // Remove data here
Debug.WriteLine( n.ToString() );
}
除了这两个地方外,foreach可以基本适用于任何循环
IEnumerator , IEnumerable 枚举器接口_Peter_Gao_的博客-CSDN博客
https://blog.csdn.net/hc1104/article/details/8130818
最后
以上就是酷炫画笔为你收集整理的C# foreach的用法的全部内容,希望文章能够帮你解决C# foreach的用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复