在C#中使用索引器访问“this”指针/引用

3

我正在尝试实验一种数据结构,用于我们代码库中性能和内存至关重要的部分。我希望能够快速访问结构中定义的字节。但是,我不确定如何使用索引器访问正在操作的结构。

[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个回答

5

您只能在fixed块内执行您想要执行的操作,例如:

fixed (Foo* foo = &this)
{
    byte* addr = (byte*)foo;
    return addr[index];
}

是的,我刚试过时语法有问题。现在完美地运行了!谢谢你! - Kraken
这就是我想要测量的:]。另外,如果我使用标准的字节数组,那么在内存中的大小比上面的代码要大。 - Kraken
我甚至不知道在C#中可以这样做。我本来想可能有一种方法,但这是我第一次见到。很酷。 - jleach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接