当前位置:  开发笔记 > 编程语言 > 正文

替换for ... if数组迭代

如何解决《替换forif数组迭代》经验,为你挑选了1个好方法。

我喜欢Python中的列表推导,因为它们简洁地表示了列表的转换.

但是,在其他语言中,我经常发现自己写的内容如下:

foreach (int x in intArray)
  if (x > 3) //generic condition on x
    x++ 
    //do other processing

这个例子在C#中,我的印象是LINQ可以帮助解决这个问题,但是有一些常见的编程结构可以取代这个稍微不那么优雅的解决方案吗?也许我不考虑数据结构?



1> Zooba..:

原始foreach循环中的增量不会影响数组的内容,唯一的方法仍然是for循环:

for(int i = 0; i < intArray.Length; ++i)
{
    if(intArray[i] > 3) ++intArray[i];
}

Linq不打算修改现有的集合或序列.它基于现有序列创建新序列.使用Linq可以实现上述代码,尽管它略微违背了它的目的:

var newArray1 = from i in intArray select ((i > 3) ? (i + 1) : (i));
var newArray2 = intArray.Select(i => (i > 3) ? (i + 1) : (i));

使用where(或等同物),如图一些其他的答案,将排除任何值小于或从得到的序列等于3.

var intArray = new int[] { 10, 1, 20, 2 };
var newArray = from i in intArray where i > 3 select i + 1;
// newArray == { 11, 21 }

有一个ForEach阵列上,将允许您使用lambda函数,而不是一个方法foreach块,但任何东西比一个方法调用我要坚持多foreach.

intArray.ForEach(i => DoSomething(i));

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有