是否可以在另一个struct中声明struct数组字段?

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct A
{
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct B
{
    public fixed A FieldA[123];
}


Visual Studio告诉FieldA只能是任何简单类型的数组,而不是struct。这里有什么解决方案/解决方法吗?

最佳答案

是否可以在另一个结构中声明结构数组字段?


是的,但是如果要将其设置为固定大小的缓冲区,则存在一些限制。根据C#4规范的18.7.1节:


  固定大小的缓冲区声明的缓冲区元素类型指定声明所引入的缓冲区的元素类型。缓冲区元素类型必须是预定义类型sbytebyteshortushortintuintlongulongcharfloat之一,doublebool


我不知道有任何替代方法可以模拟任意结构的固定大小的缓冲区。

10-07 19:39
查看更多