我有 2 个 int 数组。
int[] data1 #
int[] data2 #
我想创建一个第三个 int[] data3,它是其他两个数组之间的差异。
让我们取 data1 中的第一个值。
该值为 15(例如)。
现在让我们取 data2 中的第一个值。
该值为 3(例如)。
data3 中的第一个值是 12。
但是,如果第一个值是相反的,即
data1[0] = 3
data2[0] = 15
那么差异将是-12。但我希望它只有 12 岁。
目前我有一个 for 循环,我在那里进行计算以获得那种类型的结果。
一个循环?
数字?
谢谢
注:
回应“关闭者”。我在一定程度上同意你的看法。我需要添加到这个问题的是:
我正在寻找最有效的方法(最快的方法,但低内存是第二优先级)来促进这一点。使用 Linq(据我所知)可能是最慢的方法?
最佳答案
您正在寻找Zip
方法
var data3 = data1.Zip(data2, (d1,d2) => Math.Abs(d1 - d2)).ToArray();
Enumerable.Zip<TFirst, TSecond, TResult> Method
Applies a specified function to the corresponding elements of two sequences, producing a sequence of the results.
所以它只需要每个对应的元素,例如
data1[0]
和 data2[0]
,然后 data1[1]
和 data2[1]
依此类推..然后应用函数Math.Abs(d1-d2)
它只是简单地减去两个数字并获得结果的绝对值。然后返回一个包含每个操作结果的序列。
关于c# - 比较 2 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743517/