2

よくわからない別の C# の質問があります。問題が発生している場所はわかっていますが、なぜそれが発生するのかわかりません。

List.Add(); を使用しています。特定の条件が満たされたときに int[] を追加するメソッド。私が見つけたのは、ループが終了し、すべての値が含まれていると思われる場合、すべての値がすべてのインデックスで同じであるということです。

デバッグ中に最初のものを正しく追加することがわかりましたが、2番目が追加されると最初のものを上書きしますが、2番目のものも追加します。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 を 1 回だけ初期化していると思います。NumbersForTriplets = new int[3]平方根を計算して配列をリストに追加するすべてのシーケンスステートメントの前にa を実行する必要があります。そうしないと、メモリの同じ部分を何度も上書きし、同じポインターをリストに何度も追加することになります。

于 2012-05-31T05:29:50.640 に答える