首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

一、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候...,要对索引的有效值进行检查) 3、不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0) 4、处理多维数组(不包括锯齿数组)更加的方便,代码如下: int...val); foreach (int item in list)//在循环语句中指定当前正在循环的元素的类型,不需要进行拆箱转换 { Console.WriteLine((2*item)); } Console.WriteLine...6、当集合元素如List等在使用foreach进行循环时,每循环完一个元素,就会释放对应的资源,代码如下: using (IEnumerator enumerator = collection.GetEnumerator...循环的劣势 1、上面说了foreach循环的时候会释放使用完的资源,所以会造成额外的gc开销,所以使用的时候,请酌情考虑 2、foreach也称为只读循环,所以再循环数组/集合的时候,无法对数组/集合进行修改

2.6K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    c# 中for和foreach循环的区别

    foreach循环一般用来数组或集合的迭代,将循环的结果依次赋值给变量,直至遍历完整个数组,如:      int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5,...8, 13 };      // foreach遍历数组 foreach (int element in fibarray)//依次迭代数组内的整型,迭代一次执行一次循环语句...foreach循环: 1.foreach循环的优势     (1)foreach语句简洁     (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)...    (3)不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0)     (4)处理多维数组(不包括锯齿数组)更加的方便,代码如下: int...循环的劣势     (1)上面说了foreach循环的时候会释放使用完的资源,所以会造成额外的gc开销,所以使用的时候,请酌情考虑     (2)foreach也称为只读循环,所以再循环数组/集合的时候

    4.9K41

    iterator 遍历与for循环与foreach的优劣对比

    []) iter.next();     } 瞬间感觉比起自己的for循环语句高端大气了不少,但此刻又有疑问,到底这两种那种比较好 先拿出for循环来对比 for(int i=0;i 的组织结构变化,不能用get()函数获取,则需要重新更改for循环代码,而迭代器不用,故这是开发爱好者比较喜欢的一种代码方式 至于效率方面,找到了一位大神的测试分析http://bbs.csdn.net... s:list) {      System.out.println(s);  }  这时,本着比对的态度,网上进行了查阅,首先从java forEach实现原理可以参见下文http://blog.csdn.net....51cto.com/62575/53321/ 我们可以看到结论: foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。...相对老的for语句来说是个很好的补充。提倡能用foreach的地方就不要再用for了。在用到对集合或者数组索引的情况下,foreach显得力不从心,这个时候是用for语句的时候了。

    24840

    C#如何:编写简单的 Parallel.ForEach 循环

    大家好,又见面了,我是你们的朋友全栈君。 如何:编写简单的 Parallel.ForEach 循环 本文档使用 lambda 表达式在 PLINQ 中定义委托。...示例 此示例假定 C:\Users\Public\Pictures\Sample Pictures 文件夹中有几个 .jpg 文件,并创建名为“Modified”的新子文件夹。...循环的工作原理类似 Parallel.For 循环。...该循环对源集合进行分区,并根据系统环境在多个线程上安排工作。 系统上的处理器越多,并行方法的运行速度就越快。 对于一些源集合,有序循环可能会更快,具体视源大小以及该循环要执行的工作类型而定。...有关性能的详细信息,请参阅数据和任务并行的潜在问题。 若要详细了解并行循环,请参阅如何:编写简单的 Parallel.For 循环。

    1.6K20

    C#操作XML文件

    对学编程的人员来说,XML是必学的技术之一。因此,这些天我都在研究C#中对XML的读写,感觉所用到的操作特别多,设计到的方法和类也比较多(反正看的时候有点晕晕的,可以看懂,但要常应用加深印象)。...XmlElement newxa = xd.CreateElement("color"); newxa.InnerText = "green"; //元素值 xe.AppendChild(newxa); //成为xe子节点...XmlNodeList xnl = xd.SelectNodes("//price"); foreach (XmlNode xn in xnl) { xn.InnerXml = "<currency...("Company"); foreach (XmlNode xn in xnl) { XmlNodeList xProlist=xn.SelectNodes("ProductFamily"); foreach...《C#XML入门经典-C#编程人员必备的XML技能》这本书确实很不错,虽然很多地方说得很杂很乱,但认真拜读也不失为一本好书,嗯~~加油,多看几遍……

    1K10

    Unity3D--网络(三)服务器返回的数据解析

    它是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式 JSON的格式很像C#中字典和数组,类对象 标准的Json:key必须用双引号。...() // 根据节点名称获取下面的该节点名称的子节点元素 -setAttribute() // 设置元素的属性 -GetAttribute() // 获得元素的属性 - InnetText -InnerXML...,第一个节点 XmlNode rootNode = doc.FirstChild; // 获取根节点的所有节点 XmlNodeList nodeList...>(); // 接着遍历所有的节点,拿到每一个节点,保存到我们的数组与集合中 foreach (XmlNode PersonNode in nodeList) {...XmlNodeList propertyPerson = PersonNode.ChildNodes; // 获取PersonNode下面的所有节点 PersonXML p =

    1.4K30

    C#操作XML方法集合

    谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操作 * 2 XMLDocument 主要是针对节点的CUID操作 * 3 XMLNode 为抽象类,做为以上两类的基类,提供一些操作节点的方法...清楚了以上的关系在操作XML时会更清晰一点 二 具体操作(C#)   以下会对Xml的结点与属性做增 删 改 查的操作也满足了实际工作中的大部分情况 先构造一棵XML树如下,其中也涉及到了写入xml...XDocument:用于创建一个XML实例文档 XElement:用于一些节点与节点属性的基本操作 以下是对Xml的 一些简单的操作 3.1 新增节点与属性 1 public void...* 4 XMLNode 为抽象类,做为以上两类的基类,提供一些操作节点的方法 */ //===========C# to Xml==========...节点的所有子节点增加一个节点,并增加属性 *2 删除指定节点的子节点的指定属性 *3 */ string

    2.5K30

    C#如何遍历某个文件夹中的所有子文件和子文件夹(循环递归遍历多层),得到所有的文件名,存储在数组列表中

    首先是有一个已知的路径,现在要遍历该路径下的所有文件及文件夹,因此定义了一个列表,用于存放遍历到的文件名。...FileInfo[] files = d.GetFiles();//文件 DirectoryInfo[] directs = d.GetDirectories();//文件夹 foreach...(FileInfo f in files) { list.Add(f.Name);//添加文件名到列表中 } //获取子文件夹内的文件列表...,递归遍历 foreach (DirectoryInfo dd in directs) { Director(dd.FullName, list);...} } 这样就得到了一个列表,其中存储了所有的文件名,如果要对某一个文件进行操作,可以循环查找: foreach (string fileName in nameList) {

    14.4K40

    C#调用新浪微博API生成RSS资源文件

    C#调用新浪微博API生成RSS资源文件 作者:一点一滴的Beer 个人主页:http://beer.cnblogs.com C#调用新浪微博API生成RSS资源文件(源文件Demo) http://www.cnblogs.com...nodeList = xmlDoc.SelectSingleNode("users").ChildNodes;//获取根节点的所有子节点 next_cursor =...nodeList = xmlDoc.SelectSingleNode("users").ChildNodes;//获取 根节点的所有子节点 ; //删除不用的一级节点,..."status"子节点--(一般情况下此节点都放在最后一个,所以就不遍历了,直接地址定位) { xmlNodeTemp.RemoveChild...RSS的标签或者说是文件夹 //下面就要开始为此文件夹节点添加下属子节点,也就是添加一些实质的RSS地址了 string strTitle = string.Empty

    85710
    领券