C# 修复了另一个结构中的结构数组?

C# 修复了另一个结构中的结构数组?,c#,.net,structure,C#,.net,Structure,我需要一个structs(都是固定大小的非托管structs)数组,但显然visual studio不喜欢我的代码。基本上我需要 固定页面表格[1024]在我的结构中。这是使VisualStudio非常适合的代码,我是否可以实现这一点(我需要预先初始化) 错误信息非常清楚。除了列出的具有固定缓冲区的类型外,不能使用任何其他类型 错误消息甚至提供了可能的解决方案,要么使用允许的类型,要么不使用固定缓冲区 如果您真的需要尝试使用的代码,那么您已经达到了无法执行任何您尝试执行的操作的地步。您能否澄清一

我需要一个
structs
(都是固定大小的非托管
structs
)数组,但显然visual studio不喜欢我的代码。

基本上我需要

固定页面表格[1024]在我的结构中。

这是使VisualStudio非常适合的代码,我是否可以实现这一点(我需要预先初始化)


错误信息非常清楚。除了列出的具有固定缓冲区的类型外,不能使用任何其他类型

错误消息甚至提供了可能的解决方案,要么使用允许的类型,要么不使用固定缓冲区


如果您真的需要尝试使用的代码,那么您已经达到了无法执行任何您尝试执行的操作的地步。

您能否澄清一下“不喜欢”和“尝试”两个词?当您尝试代码时会发生什么,它与您期望的有什么不同?您是否收到任何错误消息,如果收到,是哪种?固定大小的缓冲区类型必须是以下类型之一:bool、byte、short、int、long、char、sbyte、ushort、uint、ulong、float或double固定大小的缓冲区不能是所列类型以外的任何类型。要避免此错误,请使用其他类型或不使用固定数组。但问题是我的结构具有固定大小,它不像我在其中扔了字符串或其他东西。。。。。int是一个struct,不知何故C接受了这一点……您将如何使用它?你能用一个
页面*
来指向足够1024页的内存吗?是的,这实际上就是我要做的…我不明白的是它是如何接受这些类型的,因为据我所知,它们都不是硬编码到C语言中的,而是用C#编写的,存在于MSCORLIB.DLL中的某个地方…@user1454902:固定缓冲区仅限于这些类型,但文档没有具体说明原因。这些类型实际上在语言中是硬编码的,但它们也在框架中定义。
[StructLayout(LayoutKind.Explicit, Pack = 1)]
public unsafe struct page_directory
{
    [FieldOffset(0)]
    public fixed page_table tables[1024];

    [FieldOffset(0x8000)]
    public fixed uint tablesPhysical[1024];

    [FieldOffset(0x9000)]
    public uint physicalAddr;
}

[StructLayout(LayoutKind.Explicit, Pack = 1)]
public unsafe struct page_table
{
    [FieldOffset(0)]
    public fixed page pages[1024];
}