为什么我的值会级联到列表中的所有其他索引中

本文关键字:其他 索引 列表 我的 级联 为什么 | 更新日期: 2023-09-27 18:35:45

还有另一个不太确定的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);

为什么我的值会级联到列表中的所有其他索引中

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