Hallo Leute,
ich mache wahrscheinlich einen Denkfehler: Ich habe eine Liste von Rectangles, also Structs. Soweit ich weiss werden diese ja per Val übergeben:
Wenn ich dann in der For-Schliefe die Squares[cnt] ändere, ändert sich tmpSquares trotzdem mit. Ich war der Meinung, dass eben Structs als Kopie übergeben werden, und nicht als Pointer.
Ich nehme an, ich mache einen Denkfehler, allerdings kann ich mir hier nicht erklären, welchen.
Hat da wer eine Idee, was dafür verantwortlich ist?
Vielen Dank im Voraus.
Müller matthias
ich mache wahrscheinlich einen Denkfehler: Ich habe eine Liste von Rectangles, also Structs. Soweit ich weiss werden diese ja per Val übergeben:
Code:
int xDiff = 0;
int yDiff = 0;
List<Rectangle> tmpSquares = squares;
switch (direction)
{
case Direction.Up:
ChangeOrientation();
return;
case Direction.Right:
xDiff = Game.BLOCK_SIZE;
yDiff = 0;
break;
case Direction.Down:
xDiff = 0;
yDiff = Game.BLOCK_SIZE;
break;
case Direction.Left:
xDiff = -Game.BLOCK_SIZE;
yDiff = 0;
break;
}
for (int cnt = 0; cnt < squares.Count; cnt++)
{
squares[cnt] = new Rectangle(squares[cnt].X + xDiff, squares[cnt].Y + yDiff, squares[cnt].Width, squares[cnt].Height);
}
Wenn ich dann in der For-Schliefe die Squares[cnt] ändere, ändert sich tmpSquares trotzdem mit. Ich war der Meinung, dass eben Structs als Kopie übergeben werden, und nicht als Pointer.
Ich nehme an, ich mache einen Denkfehler, allerdings kann ich mir hier nicht erklären, welchen.
Hat da wer eine Idee, was dafür verantwortlich ist?
Vielen Dank im Voraus.
Müller matthias