如何在C#中通过加法运算连接数组?

如何在C#中通过加法运算连接数组?,c#,arrays,C#,Arrays,我有两个数组定义,我想一个元素一个元素地做加法运算,而不做循环运算?例如: decimal[] xx = { 1, 2, 3 }; decimal[] yy = { 6, 7, 8 }; 我想要的结果是: decimal[] zz = { 7, 9, 11 }; 加法操作很简单。只需为每个元素逐个添加,如 decimal[] zz = decimal[xx.Length]; for (int i=0; i<xx.Length;i++){ zz[i] =xx[i] + yy[i];

我有两个数组定义,我想一个元素一个元素地做加法运算,而不做循环运算?例如:

decimal[] xx = { 1, 2, 3 };
decimal[] yy = { 6, 7, 8 };
我想要的结果是:

decimal[] zz = { 7, 9, 11 };
加法操作很简单。只需为每个元素逐个添加,如

decimal[] zz = decimal[xx.Length];
for (int i=0; i<xx.Length;i++){
   zz[i] =xx[i] + yy[i];
}
decimal[]zz=decimal[xx.长度];
对于(int i=0;i您可以使用:

您可以使用LINQ:

var zz = Enumerable
             .Range(0, (int)Math.Min(xx.Length, yy.Length))
             .Select(i => xx[i] + yy[i])
             .ToArray();

但这实际上只是在幕后移动循环。

如果它们是全局范围的数组,则可以使用递归

public void add(int index){

  zz[index] = xx[index] + yy[index];

  if(index < xx.Length){
     add(index+1);

   }

}
public void添加(int索引){
zz[index]=xx[index]+yy[index];
如果(索引
是psuedo代码,未经测试,但代表总体思路。请告诉我您的想法。

另一种方式使用旁边的
Zip

  var zz = xx.Select((x, i) => x + yy[i]).ToArray();
var result = Enumerable.Range(0, xx.Length)
                       .Select(i => xx[i] + yy[i])
                       .ToArray();

如果没有某种循环,你就无法做到这一点

您的阵列创建和循环应为:

decimal[] zz = new decimal[xx.Length];
for (int i = 0; i < xx.Length; i++){
   zz[i] = xx[i] + yy[i];
}
或:


为什么要去掉循环?为什么每个循环执行3次加法???因为这是迄今为止唯一一个不使用循环的答案,我认为它不值得-1:p谢谢!我不保证它的最佳性,但希望它满足简要说明。这段代码将返回比
xx
少一个元素的数组。r如果
xx
大于
yy
@TimSchmelter,则
IndexOutOfRangeException
的结果是:明白了,似乎
Zip
将是最好的。这是.NET 3.5的最佳方式,因为
可枚举.Zip
需要.NET 4.0。如果
xx
大于
y,将导致
IndexOutOfRangeException
y
…但是在.net 3.5中为.Zip编写一个替换项很简单:如果
xx
大于
yy
Zip
将忽略它,那么会导致
索引自动失效异常
,这可能是一个选项,而不是索引器e、 那么这种方法甚至比
Enumerable.Zip
还有一个额外的优势。
decimal[] zz = new decimal[xx.Length];
for (int i = 0; i < xx.Length; i++){
   zz[i] = xx[i] + yy[i];
}
decimal[] zz = new decimal[xx.Length];
for (int i = 0; i < xx.Length; zz[i++] = xx[i] + yy[i]);
decimal[] zz = xx.Select((x, i) => x + yy[i]).ToArray();
decimal[] zz = Enumerable.Range(0, xx.Length).Select(i => xx[i]+yy[i]).ToArray();