我有多个相同类型的数组(当前为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
,其中有些包含非常琐碎的代码。
答案 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[]{});
这样,您可以为多个相同类型的数组调用委托,并且如果要更改任何数组的操作逻辑,则可以实现一个遵守委托签名并将其分配给委托的方法。