如何使用一个循环迭代多个数组?

时间:2020-08-07 12:14:20

标签: c# arrays loops

我有多个相同类型的数组(当前为2个),我需要对这些数组执行类似的操作。

Custom[] array1 = new Custom[10];
Custom[] array2 = new Custom[20];

// Assign values to array1 and array2

foreach(var v in array1)
{
// Do some operations
}

foreach(var v in array2)
{
// Do some operations
}

在两个foreach loops中,我都对数组中的对象执行类似的操作。 这些操作确实会根据条件修改数组中对象的某些属性。

有什么办法可以合并foreach loops? 我想在过程结束时保持两个数组不变,因此不能将一个数组复制到另一个数组或类似的东西。我还想避免创建一个包含两个合并的数组的新数组(我认为这可能会导致空间问题,因为“自定义”可以是“值”类型或“引用”类型)。

我发现的一个解决方案是拥有一个包含foreach loop的单独函数,然后为多个数组调用该函数。

private void DoOperations(Custom[] array)
{
    foreach(var v in array)
    {
    // Do some operations
    }
}

// In main
DoOperations(array1);
DoOperations(array2);

我只想知道是否还有其他方法可以实现此目的,因为我需要更多的foreach loops,其中有些包含非常琐碎的代码。

2 个答案:

答案 0 :(得分:0)

Custom[] array1 = new Custom[10];
Custom[] array2 = new Custom[20];

var arr = arr1.Union(arr2).ToArray();

foreach(var v in array)
{
    // Do some operations
}

答案 1 :(得分:0)

请参见下面的实现

 public Func<custom[], custom[]> performOperation { get; set; }
 public custom[] iterateArray(custom[] arg)
        {
            foreach (var item in arg)
            {
                //Do operation
            }

            return arg;
        }

然后您可以将委托分配给iterateArray方法并调用它,请参见下文

    performOperation = iterateArray;
    performOperation(new custom[]{});

这样,您可以为多个相同类型的数组调用委托,并且如果要更改任何数组的操作逻辑,则可以实现一个遵守委托签名并将其分配给委托的方法。

相关问题