Nun, sind X und Y Eigenschaften (anstatt Felder)? Wenn ja, ist das das Problem. Bis alle Felder innerhalb x
definitiv zugewiesen sind, können Sie keine Methoden oder Eigenschaften aufrufen.
Zum Beispiel:
public struct Foo
{
public int x;
public int X { get { return x; } set { x = value; } }
}
class Program
{
static void Main(string[] args)
{
Foo a;
a.x = 10; // Valid
Foo b;
b.X = 10; // Invalid
}
}
Ist Vec2
Ihre eigene Art? Haben Sie Zugriff auf die betroffenen Felder oder nur auf die Eigenschaften?
Wenn es Ihre eigene Art ist, würde ich stark Sie drängen, zu versuchen, zu unveränderlichen Strukturen beizubehalten. Ich weiß, dass managed DirectX einige veränderbare Strukturen hat, um so nahe wie möglich an die optimale Leistung heranzukommen, aber das kostet seltsame Situationen wie diese - und viel schlimmer, um ehrlich zu sein.
würde ich persönlich geben der Struktur einen Konstruktor unter X und Y:
Vec2 x = new Vec2(det * (a22 * b.X - a12 * b.Y),
det * (a11 * b.Y - a21 * b.X));
Ah, das waren Eigenschaften. Guter Fang! Ich werde darüber nachdenken, X und Y privat zu machen, wenn ich damit durchkommen kann. – mpen
+1. Netter, Jon. –
Ich bin sehr neu und würde definitiv eine Antwort auf diesen Zweifel zu schätzen wissen: Wenn ich x direkt wie gezeigt einstellen kann, was nützt es, eine Setter-Methode zu haben? Ich habe das selbe Problem, aber die Struktur, die ich habe, hat x als private öffentliche Getter- und Setter-Methoden gesetzt, um sie zu manipulieren. Wie soll ich damit arbeiten? – darnir