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

标签 c# pointers sizeof fixed unsafe

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

类似于:

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

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

有什么办法可以完成这样的事情吗?

最佳答案

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

关于c# - 如何获得固定的缓冲区长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37121586/

相关文章:

c# - 使用 ManagementClasses 添加 ScriptMap 对象

c++ - 关于sizeof的一个疑问

c++ - 使用指针的数组长度

c - 由 2 个结构组成的链表。接入节点

c++ - 使用 char* 存储整数

c - 如何捕获 sizeof(#define) 形式的错误

c - 为什么我得到 realloc() : invalid next size error for this code?

c# - 透明重叠圆形进度条(自定义控件)

c# - 如何处理 .Net 中的模糊日期

c# - Autofac、单元测试、C# - Autofac Moq 和 FakeItEasy 集成包之间的区别