次のコードを参照してください。
List<Vector2> axes = new List<Vector2>();
axes.Add(TopRight() - TopLeft());
axes.Add(BottomLeft() - TopLeft());
axes.Add(otherRectangle.TopRight() - otherRectangle.TopLeft());
axes.Add(otherRectangle.BottomLeft() - otherRectangle.TopLeft());
// Try normalizing vectors?
foreach (Vector2 axis in axes)
{
axis.Normalize();
}
メソッドは、Vector2.Normalize()
呼び出されたベクトルを正規化する void メソッドです。しかし、何らかの理由でこのループを実行すると、ベクトルが正規化されません。この方法でリストを変更できないのでしょうか?
いくつかの奇妙な点:
- for ループで繰り返します。つまり、
axis[i].Normalize()
機能しません。 - 組み込み
List<T>.ForEach
イテレータを使用した反復は機能しません。 - リストを反復処理するのではなく、リストに追加する前にベクトルを正規化して作成すると機能します。
繰り返しがうまくいかないのはなぜですか?