簡體   English   中英

如何在C#中通過加法運算連接數組?

[英]How do I join an array by addition operation in C#?

我有兩個數組定義,我想逐個元素進行加法運算而不進行循環操作? 例如:

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];
}

但是我不想使用循環操作。

您可以使用Enumerable.Zip

decimal[] zz = xx.Zip(yy, (x, y) => x + y).ToArray();
  var zz = xx.Select((x, i) => x + yy[i]).ToArray();

您可以使用LINQ:

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

但這實際上只是在移動幕后的循環。

Zip旁邊使用Enumerable.Range的另一種方式:

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];
}

或更緊湊但可讀性較低的版本:

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

您還可以使用Linq擴展來執行循環:

decimal[] zz = xx.Select((x, i) => x + yy[i]).ToArray();

要么:

decimal[] zz = Enumerable.Range(0, xx.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);

   }

}

是偽代碼,未經測試,但代表一般想法。 讓我知道你的想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM