C#中foreach循环对比for循环的优势和劣势
发布时间 - 2026-01-11 03:12:22 点击率:次前言

循环语句为众多程序员们提供了很大的便利,有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循环中创建线程执行问题
# 说了
# 多维
# 有效值
# 几个
# 就会
# 不需要
# 有很多
# 不多
# 两次
# 有一定
# 是从
# 转到
# 给大家
# 才可以
# 或者是
# 要对
# 这篇文章
# 就将
# 谢谢大家
# 相对于
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
javascript中闭包概念与用法深入理解
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何在IIS中配置站点IP、端口及主机头?
奇安信“盘古石”团队突破 iOS 26.1 提权
如何彻底删除建站之星生成的Banner?
EditPlus中的正则表达式实战(5)
Laravel怎么调用外部API_Laravel Http Client客户端使用
如何破解联通资金短缺导致的基站建设难题?
Laravel如何优化应用性能?(缓存和优化命令)
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel如何实现本地化和多语言支持?(i18n教程)
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
WordPress 子目录安装中正确处理脚本路径的完整指南
如何在服务器上三步完成建站并提升流量?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
大连 网站制作,大连天途有线官网?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
jQuery 常见小例汇总
无锡营销型网站制作公司,无锡网选车牌流程?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel怎么实现验证码(Captcha)功能
音乐网站服务器如何优化API响应速度?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Firefox Developer Edition开发者版本入口
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
JavaScript如何操作视频_媒体API怎么控制播放
Android okhttputils现在进度显示实例代码
如何确认建站备案号应放置的具体位置?
如何在搬瓦工VPS快速搭建网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何用低价快速搭建高质量网站?
手机网站制作与建设方案,手机网站如何建设?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
如何撰写建站申请书?关键要点有哪些?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Bootstrap CSS布局之列表
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Windows Hello人脸识别突然无法使用

