全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#中foreach循环对比for循环的优势和劣势

前言

循环语句为众多程序员们提供了很大的便利,有while、do...while、for和 foreach。而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的。本文将详细给大家关于C#中foreach循环对比for循环的优势和劣势,下面话不多说了,来一起看看详细的介绍吧。

一、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())
{
  while (enumerator.MoveNext())
  {
   this.Add(enumerator.Current);
  }
}

二、foreach循环的劣势

1、上面说了foreach循环的时候会释放使用完的资源,所以会造成额外的gc开销,所以使用的时候,请酌情考虑

2、foreach也称为只读循环,所以再循环数组/集合的时候,无法对数组/集合进行修改。

3、数组中的每一项必须与其他的项类型相等.

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


# for循环和foreach  # for循环与foreach  # c  # foreach  # 跳出循环  # C#中Foreach循环遍历的本质与枚举器详解  # C# 9.0新特性——扩展方法GetEnumerator支持foreach循环  # c#中list.FindAll与for循环的性能对比总结  # 浅谈C#中的for循环与foreach循环  # C# for循环的经典案例集锦  # C# winform循环播放多个视频  # C#使用for循环移除HTML标记  # c# for循环中创建线程执行问题  # 说了  # 多维  # 有效值  # 几个  # 就会  # 不需要  # 有很多  # 不多  # 两次  # 有一定  # 是从  # 转到  # 给大家  # 才可以  # 或者是  # 要对  # 这篇文章  # 就将  # 谢谢大家  # 相对于 


相关文章: TestNG的testng.xml配置文件怎么写  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  香港服务器租用费用高吗?如何避免常见误区?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  如何确认建站备案号应放置的具体位置?  建站之星安装后如何配置SEO及设计样式?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  用v-html解决Vue.js渲染中html标签不被解析的问题  成都响应式网站开发,dw怎么把手机适应页面变成网页?  简单实现Android验证码  北京的网站制作公司有哪些,哪个视频网站最好?  如何通过VPS建站无需域名直接访问?  高防服务器租用指南:配置选择与快速部署攻略  如何获取开源自助建站系统免费下载链接?  如何在阿里云通过域名搭建网站?  动图在线制作网站有哪些,滑动动图图集怎么做?  ,有什么在线背英语单词效率比较高的网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  制作公司内部网站有哪些,内网如何建网站?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何快速上传自定义模板至建站之星?  如何选择高效响应式自助建站源码系统?  实现虚拟支付需哪些建站技术支撑?  html制作网站的步骤有哪些,iapp如何添加网页?  代购小票制作网站有哪些,购物小票的简要说明?  南京网站制作费用,南京远驱官方网站?  大连网站设计制作招聘信息,大连投诉网站有哪些?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  外贸公司网站制作哪家好,maersk船公司官网?  网站网页制作专业公司,怎样制作自己的网页?  建站之星后台密码遗忘或太弱?如何重置与强化?  电商平台网站制作流程,电商网站如何制作?  如何在万网ECS上快速搭建专属网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  西安大型网站制作公司,西安招聘网站最好的是哪个?  python的本地网站制作,如何创建本地站点?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何用IIS7快速搭建并优化网站站点?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何用搬瓦工VPS快速搭建个人网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  建站之星安装模板失败:服务器环境不兼容?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  实现点击下箭头变上箭头来回切换的两种方法【推荐】  建站VPS能否同时实现高效与安全翻墙? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。