相关文章推荐
谦和的打火机  ·  我靠称号系统打败万千神豪漫画|官方在线漫画全 ...·  2 年前    · 
暴走的豆芽  ·  CBA-商业银行孟加拉格莱珉银行体验之旅分享 ...·  2 年前    · 
帅呆的毛衣  ·  日产、本田、三菱汽车、铃木的HV/PHV/E ...·  2 年前    · 
稳重的甘蔗  ·  北海康成宣布硅谷银行事件对公司影响非常有限_ ...·  2 年前    · 
面冷心慈的人字拖  ·  山君漫画解说 - 抖音·  2 年前    · 
Code  ›  C# foreach循环较for循环的优势与劣势开发者社区
for循环 c#
https://cloud.tencent.com/developer/article/1029655
强健的企鹅
2 年前
作者头像
郑小超.
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())
 
推荐文章
谦和的打火机  ·  我靠称号系统打败万千神豪漫画|官方在线漫画全集-快看漫画
2 年前
暴走的豆芽  ·  CBA-商业银行孟加拉格莱珉银行体验之旅分享会 - 学城空间 - 文化 - 深圳大学城
2 年前
帅呆的毛衣  ·  日产、本田、三菱汽车、铃木的HV/PHV/EV计划 - MarkLines全球汽车产业平台
2 年前
稳重的甘蔗  ·  北海康成宣布硅谷银行事件对公司影响非常有限_手机新浪网
2 年前
面冷心慈的人字拖  ·  山君漫画解说 - 抖音
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号