Доступ к указателю / ссылке this с помощью индексатора в C#

Я экспериментирую с структурой данных для критической части производительности / памяти в нашей кодовой базе. Я хотел бы иметь быстрый доступ к байтам, определенным в структуре. Однако я не уверен, как получить доступ к структуре, на которой я работаю, используя индексатор.

[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct Foo
{
    [SerializeField]
    private byte a, b, c;

    public unsafe byte this[byte index]
    {
        get
        {       
            //omitted safety checks   

            //this is a no, no
            byte* addr = (byte*)&this;

            return addr[index];
        }
    }
}

1 ответ

Решение

Вы можете делать только то, что вы пытаетесь сделать внутри fixed блок, то есть:

fixed (Foo* foo = &this)
{
    byte* addr = (byte*)foo;
    return addr[index];
}
Другие вопросы по тегам