Wert eines Objektes geht einfach verloren

Eroli

Erfahrenes Mitglied
Hallo zusammen,

auf ein neues Problem :rolleyes:

Ich habe die Klasse "Waypoint" wie folgt gestaltet:
C#:
public class Waypoint : ICloneable
        {
            private int m_X;
            private int m_Y;
            private bool m_Vertical;
            private int m_Changer = 1;

            public int X
            {
                get
                {
                    return m_X;
                }
                set
                {
                    m_X = value;
                }
            }
            public int Y
            {
                get
                {
                    return m_Y;
                }
                set
                {
                    m_Y = value;
                }
            }
            public bool Vertical
            {
                get
                {
                    return m_Vertical;
                }
                set
                {
                    m_Vertical = value;
                }
            }
            public int Changer
            {
                get
                {
                    return m_Changer;
                }
                set
                {
                    m_Changer = value;
                }
            }

            public object Clone()
            {
                Waypoint clonedWaypoint = new Waypoint();
                clonedWaypoint.X = this.X;
                clonedWaypoint.Y = this.Y;
                clonedWaypoint.Vertical = this.Vertical;
                clonedWaypoint.Changer = this.Changer;
                return clonedWaypoint;
            }
        }
Von der Klasse erstellen wir nun ein neues Objekt, das klappt auch - anfangs. Ich habs mal im Debugger verfolgt:

Hier der nötige Code-Ausschnitt:
C#:
            for (int j = 0; j <= m_Creep.Length - 1; j++)
            {
                for (int i = 0; i <= m_Creep[j].PossibleWaypointsX.Length - 1; i++)
                {
                    if (m_Creep[j].PossibleWaypointsX[i].Y - m_Creep[j].Position.Y < differenceY)
                    {
                        differenceY = m_Creep[j].PossibleWaypointsX[i].Y - m_Creep[j].Position.Y;
                        indexY = i;
                    }
                }
                for (int i = 0; i <= m_Creep[j].PossibleWaypointsY.Length - 1; i++)
                {
                    if (m_Creep[j].PossibleWaypointsY[i].X - m_Creep[j].Position.X < differenceX)
                    {
                        differenceX = m_Creep[j].PossibleWaypointsY[i].X - m_Creep[j].Position.X;
                        indexX = i;
                    }
                }
[...]
}

In der ersten Forschleife innerhalb der anderen For-Schleife - also eigentlich der zweiten For-Schleife ;) hat das Objekt noch die richtigen Werte(Es handelt sich um ein Array). Im restlichen Anweisungsblock bleiben die Werte ebenfalls vorhanden.

In der zweiten - bzw dritten For-Schleife ;) werden mir von meiner Entwicklungsumgebung aber auf einmal die falschen Werte angezeigt - oder besser gesagt die Standardwerte(meistens nullen ;))

Wie kann es sein, dass das Objekt ein paar Zeilen vorher noch seine Werte hatte und dann nicht mehr?! Das bleibt auch so - im ganzen folgenden Code-Block hat dieses Objekt nur noch seine unbrauchbaren Default-Werte...


Viele Grüße,
Eroli
 
Kommando zurück - Ich habe (mal wiede ;)) gelabert.

Es handelt sich natürlich um 2 versch. Objekte - der eine Buchstabe "X" bzw "Y" macht den Unterschied ;)
 
Zurück