相关文章推荐
儒雅的企鹅  ·  【QuikGraph】C#调用第三方库计算有 ...·  3 月前    · 
虚心的橙子  ·  广州地铁:开通贯通车 “解压”体育西_央广网·  7 月前    · 
安静的手套  ·  孙悟空新皮肤超时空猴王_新版超时空猴王孙悟空 ...·  2 年前    · 
睡不着的针织衫  ·  探花最漂亮的是哪一期 - 百度·  2 年前    · 
才高八斗的酱肘子  ·  【日语作文大全】《中国传统节日(中国の伝統的 ...·  2 年前    · 
冷静的香菇  ·  路(1983年陈立州导演剧情片)_百度百科·  3 年前    · 
Code  ›  C# foreach循环较for循环的优势与劣势开发者社区
for循环 c#
https://cloud.tencent.com/developer/article/1029655
强健的企鹅
3 年前
作者头像
郑小超.
0 篇文章

C# foreach循环较for循环的优势与劣势

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > GreenLeaves > C# foreach循环较for循环的优势与劣势

C# foreach循环较for循环的优势与劣势

作者头像
郑小超.
发布 于 2018-01-26 15:49:09
1.3K 0
发布 于 2018-01-26 15:49:09
举报

一、foreach循环的优势

C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势:

1、foreach语句简洁

2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)

3、不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0)

4、处理多维数组(不包括锯齿数组)更加的方便,代码如下:

int[,] nVisited ={
       {1,2,3},
       {4,5,6},
       {7,8,9}
// Use "for" to loop two-dimension array(使用for循环二维数组)
Console.WriteLine("User 'for' to loop two-dimension array");
for (int i = 0; i < nVisited.GetLength(0); i++)
    for (int j = 0; j < nVisited.GetLength(1); j++)
         Console.Write(nVisited[i, j]);
         Console.WriteLine();
//Use "foreach" to loop two-dimension array(使用foreach循环二维数组)
Console.WriteLine("User 'foreach' to loop two-dimension array");
foreach (var item in nVisited)
Console.Write(item.ToString());

foreach只用一行代码就将所有元素循环了出来,而for循环则就需要很多行代码才可以.

注:foreach处理锯齿数组需进行两次foreach循环

int[][] nVisited = new int[3][];
nVisited[0] = new int[3] { 1, 2, 3 };
nVisited[1] = new int[3] { 4, 5, 6 };
nVisited[2] = new int[6] { 1, 2, 3, 4, 5, 6 };
//Use "foreach" to loop two-dimension array(使用foreach循环二维数组)
Console.WriteLine("User 'foreach' to loop two-dimension array");
foreach (var item in nVisited)
      foreach (var val in item)
          Console.WriteLine(val.ToString());

5、在类型转换方面foreach不用显示地进行类型转换

int[] val = { 1, 2, 3 };
ArrayList list = new ArrayList();
list.AddRange(val);
foreach (int item in list)//在循环语句中指定当前正在循环的元素的类型,不需要进行拆箱转换
Console.WriteLine((2*item));
Console.WriteLine();
for (int i = 0; i < list.Count; i++)
int item = (int)list[i];//for循环需要进行拆箱
Console.WriteLine(2 * item);
}

6、当集合元素如List<T>等在使用foreach进行循环时,每循环完一个元素,就会释放对应的资源,代码如下:

using (IEnumerator<T> enumerator = collection.GetEnumerator())
 
推荐文章
儒雅的企鹅  ·  【QuikGraph】C#调用第三方库计算有向图、无向图的连通分量
3 月前
虚心的橙子  ·  广州地铁:开通贯通车 “解压”体育西_央广网
7 月前
安静的手套  ·  孙悟空新皮肤超时空猴王_新版超时空猴王孙悟空_超时空猴王孙悟空漫画 - 抖音
2 年前
睡不着的针织衫  ·  探花最漂亮的是哪一期 - 百度
2 年前
才高八斗的酱肘子  ·  【日语作文大全】《中国传统节日(中国の伝統的な祭日)》300字/400字,日语作文双语20篇! - 知乎
2 年前
冷静的香菇  ·  路(1983年陈立州导演剧情片)_百度百科
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号