我为类型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