Ну, а свойства X и Y (а не поля)? Если так, то это проблема. Пока все поля в x
не назначены, вы не можете вызывать методы или свойства.
Например:
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
}
}
Является ли Vec2
вашим собственным типом? У вас есть доступ к соответствующим полям или только к свойствам?
Если это ваш собственный тип, я бы настоятельно убедил бы вас придерживаться неизменных структур. Я знаю, что управляемый DirectX имеет некоторые изменчивые структуры для достижения максимально возможной производительности, но это за счет странных ситуаций, подобных этой, - и, честно говоря, гораздо худших.
Я бы лично дал struct конструктор, принимающий X и Y:
Vec2 x = new Vec2(det * (a22 * b.X - a12 * b.Y),
det * (a11 * b.Y - a21 * b.X));