Как правильно индексировать поля в структуре по индексу

У меня есть следующий код.

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;
}

Является ли вышеуказанный надежный способ индексировать поля по номеру? Или я должен указать некоторые атрибуты упаковки, чтобы убедиться, что это работает.

Случай использования заключается в том, что иногда мне нужно индексировать по имени, а иногда по номеру. Я счастлив работать на металле с небезопасным кодом, если он решает некоторые проблемы с производительностью. Этот код используется в очень узком цикле, который выполняется миллионы раз. Физика типа движка так быстро лучше чем хорошенькая.

0 ответов

Другие вопросы по тегам