なぜこの例外が発生するのか誰かに教えてもらえますか?アクセスしようとしているリスト内の要素が存在しないと表示されているために「なぜ」取得しているのかはわかっていますが、コードをステップスルーすると、実際に存在していることがわかりますか?
Game1では、ヘルパークラスの計算メソッドを呼び出します。次に、計算が完了したら、その結果をCalculationHelperクラスのList<>に追加します。このためのコードは次のようになります。
CalculationHelper calcHelperクラスをインスタンス化したGame1クラスで、クラスメソッドの1つを呼び出します。最初に、Game1で、以下に示すfor()ループでcalcHelper.ForceVanishingPointIntersections(...)メソッドを呼び出します。これは問題なく機能し、calcHelper.ForceVanishingPointIntersections(...)メソッドはCalculationHelperクラスのIntersectionPointList <>に値を追加します(以下のメソッドを参照)。
for (int i = 0; i < LineList.Count; i++)
{
calcHelper.ForceVanishingPointIntersections(LineList[i], LineList[i + 1]);
AddSprite(VanishingPointIntersectionList, calcHelper.GetIntersectionPointListElementAt(i), greenCirlce);
i++;
}
いくつかの計算を行い、CalculationHelperクラスのIntersectionPointlistに値を追加するには、次のようにします。
List<Vector2> IntersectionPointList = new List<Vector2>();
public void ForceVanishingPointIntersections(Line line1, Line line2)
{
Vector2 intersectionPoint;
// Do some calculations
IntersectionPointList.Add(intersectionPoint);
}
最後に、Game1クラスで、for()ループの2番目のメソッドで、AddSpriteを呼び出してスプライトを作成します。CalculationHelperクラスIntersectionPointListに格納されている値をスプライトの座標として渡したい。この目的のために、CalculationHelperクラスのメソッドを呼び出すcalcHelper.GetIntersectionPointListElementAt(i)を呼び出します(IntersectionPointList <>から指定されたポイント(i)の値を返す必要があります)public Vector2 GetIntersectionPointListElementAt(int index){Vector2 result = this.IntersectionPointList [index]; 結果を返します。for()ループが初めて実行されるとき、これは正常に機能します。計算を行うと、値がリストに保存され、リストからこの値を取得してAddSprite(..)に渡すことができます。ただし、2回目のfor()ループでは、
public Vector2 GetIntersectionPointListElementAt(int index)
{
Vector2 result = this.IntersectionPointList[index]; // Exception thrown here
return result;
}
インデックスが範囲外だと言っていますか?しかし、コードをステップスルーすると、IntersectionPointListが更新され、リストに2つの値が含まれていることが示されます。そして、私は2番目の値にアクセスしようとしています。
なぜこれができるのか誰かが知っていますか?私の人生の間、私はどこが間違っているのか理解できません。
さらにコードが必要な場合は、さらに投稿できます。お知らせください。