Как правильно индексировать поля в структуре по индексу
У меня есть следующий код.
public class BoxCorners
{
public Vector3 V000;
public Vector3 V001;
public Vector3 V010;
public Vector3 V011;
public Vector3 V100;
public Vector3 V101;
public Vector3 V110;
public Vector3 V111;
public Vector3 Index(int i)
{
if (i > 7)
{
throw new IndexOutOfRangeException($"{i}");
}
unsafe
{
fixed (Vector3 * v = &V000)
{
return v[i];
}
}
}
}
где Vector3
это структура, а также с тремя двойными.
public struct Vector3 {
double X;double Y; double Z;
}
Является ли вышеуказанный надежный способ индексировать поля по номеру? Или я должен указать некоторые атрибуты упаковки, чтобы убедиться, что это работает.
Случай использования заключается в том, что иногда мне нужно индексировать по имени, а иногда по номеру. Я счастлив работать на металле с небезопасным кодом, если он решает некоторые проблемы с производительностью. Этот код используется в очень узком цикле, который выполняется миллионы раз. Физика типа движка так быстро лучше чем хорошенькая.