添加两个List <decimal []>类型的单个元素

时间:2017-11-24 17:00:57

标签: c# list

我为类型List<decimal[]>创建了一个扩展方法,它可以添加元素。方法如下:

public static void ElementAddition(this List<decimal[]> thisList, List<decimal[]> listToAdd)
{
   if (thisList.Count == 0) return;
   for (var i = 0; i < thisList.Count; i++)
   {
      for (var j = 0; j < thisList[0].Length; j++)
      {
         thisList[i][j] += listToAdd[i][j];
      }
   }
}

这有一些有趣的结果。每次thisList[i][j] += listToAdd[i][j];行执行时,它都会将一个列表中的所有元素添加到另一个列表中。所以我最终得到thisList比它应该大得多。它不像我期望的那样按元素添加。

我努力在stackoverflow上找到类似的问题,所以任何指针都会有用。我显然不了解列表的实现?

编辑: 以下单元测试:

[Test]
public void ElementAddition_WhenCalled_CorrectlyAddIndividualElements()
{
    var decListOne = new decimal[] {1, 2, 3, 4};
    var decListTwo = new decimal[] {10, 20, 30, 40};
    var listListOne = new List<decimal[]>();
    var listListTwo = new List<decimal[]>();

    for (var i = 0; i < 3; i++)
    {
        listListOne.Add(decListOne);
        listListTwo.Add(decListTwo);
    }

    listListOne.ElementAddition(listListTwo);

    Assert.AreEqual(11m,listListOne[0][0]);
}

提供此输出:

Expected: 11m But was: 31m

0 个答案:

没有答案