如何获得固定的缓冲区长度?

时间:2016-05-09 17:07:35

标签: c# pointers unsafe low-level

有没有办法获得固定大小的缓冲区的长度?

类似的东西:

public struct MyStruct
{
    public unsafe fixed byte buffer[100];

    public int foo()
    {
        return sizeof(buffer); // Compile error.
    }
}

有没有办法完成这样的事情?

2 个答案:

答案 0 :(得分:3)

在C ++中like,你必须保持内置数组的大小。同样适用于C#中的固定缓冲区。此类型为comparableinline_array。这为您提供了诸如静态代码检查之类的好处。他们有点痛苦,因为他们不是C#的头等功能。因此,最好的解决方案是将大小保持为struct的一部分。您可能只需处理它或使用集合/ C#的System.Array。也许另一种解决方案是将固定缓冲区创建为单独的结构,然后将其作为另一个结构与其他数据的一部分。

答案 1 :(得分:-3)

那是一个阵列;你可以使用.Length