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?
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);
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