Я хотел попробовать небезопасную «особенность» c#, создавая простые структуры (Вектор, Частица).
СИТУАЦИЯ
У меня есть 2 структуры и хочу ввести векторы положения и скорости в мою структуру Particle . В качестве теста я хотел распечатать значение X позиции, но каким-то образом я получаю случайные значения.
У меня есть следующий код здесь
Вектор
public readonly struct Vector
{
public int X { get; }
public int Y { get; }
public Vector(int x, int y)
{
X = x;
Y = y;
}
}
Частица
public unsafe struct Particle
{
private Vector* mPosition;
private Vector* mVelocity;
public Particle(Vector position, Vector velocity = default)
{
mPosition = &position; // here is x 10
mVelocity = &velocity;
}
public int GetPosX()
{
return mPosition->X; // but here not
}
}
Программа
public class Program
{
private static void Main(string[] args)
{
var pos = new Vector(10, 5);
var obj = new Particle(pos);
Console.WriteLine(obj.GetPosX()); // prints random value
}
}
ПРОБЛЕМА
Он печатает случайное значение вместо 10.