2

有另一个我不太确定的 C# 问题。我知道问题出在哪里,但不明白为什么会发生。

我正在使用 List.Add(); 满足某些条件时添加 int[] 的方法。我发现当循环完成并且我应该包含所有值时,每个索引中的所有值都是相同的。

在调试期间,我发现它正确添加了第一个,但是当添加第二个时,它会覆盖第一个但也添加了第二个。我以前从未见过 List.Add() 发生这种情况,但也许是因为我这次存储的是 int[] 对象?

这是添加所有内容的代码。对我来说看起来无害,但这可能是我缺乏知识的地方:

NumbersForTriples[0] = (int)Math.Sqrt(a);
NumbersForTriples[1] = (int)Math.Sqrt(b);
NumbersForTriples[2] = (int)Math.Sqrt(c);
Triples.Add(NumbersForTriples);
4

1 回答 1

4

我认为您只初始化 NumbersForTriplets 一次。您应该NumbersForTriplets = new int[3]在每个序列语句之前执行计算平方根并将数组添加到列表中,否则您将一次又一次地覆盖相同的内存部分并将相同的指针添加到列表中多次。

于 2012-05-31T05:29:50.640 回答