Laden...

Point-Struktur als Property in Klasse verwenden und einzelne Member des Structs mit Daten füllen

Erstellt von oehrle vor 12 Jahren Letzter Beitrag vor 12 Jahren 774 Views
Thema geschlossen
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Point-Struktur als Property in Klasse verwenden und einzelne Member des Structs mit Daten füllen

Hallo, ich habe gerade ein Problem mit Point. Ich möchte in einer Klasse Properties als Point verwenden.


public class Konturzug
{

private Point strtpkt;

public Point Startpunkt
        { 
            get { return strtpkt; }
            set { strtpkt = value;}
        }
}

Wenn ich nun in einem Programmteil die Point-variablen X und Y mit Daten belegen möchte, geht das nicht > Fehlermeldung:

Connot modify the expression, because its not a variable

Beispiel:


kontZug.Startpunkt.X = abstandx;

Was muss ich dabei beachten? Das muss doch so möglich sein?

R
100 Beiträge seit 2009
vor 12 Jahren

Hallo oehrle,
Point ist ein Struct und daher ein Value Type (nicht Reference Type). Du kannst den Wert nicht setzen wie du gemacht hast. Versuch mal mit dem Code

kontZug.Startpunkt = new Point(abstandx, kontZug.Startpunkt.Y);
49.485 Beiträge seit 2005
vor 12 Jahren

Hallo oehrle,

sollte auch klar sein, denn in kontZug.Startpunkt liefert der Startpunkt-Getter eine Kopie des Structs (ist ja ein ValueType). In dieser Kopie einen Wert eines Members zu setzen, macht keinen Sinn, weil die Kopie sofort danach verworfen wird. Genau das sagt auch die Fehlermeldung, die man bekommt. Siehe daher [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen) und [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Wie rongchaua schon gesagt hat, muss man den Struct als ganzes an Startpunkt zuweisen. Natürlich kann man den alten Wert vorher abrufen, in einer Variable von Typ Point speichern, ihn dort ändern und anschließend wieder an die Startpunkt-Property zuweisen. Aber auch das wurde schon oft genug besprochen. Siehe daher auch [Hinweis] Wie poste ich richtig? Punkt 1.1.

herbivore

Thema geschlossen