繁体   English   中英

我如何在struct中声明数组?

[英]How I can declare arrays in struct?

如何在其中声明具有固定大小数组的结构?

我找到了解决方案,但它只适用于原始数据类型。 我需要我的数组是MyStruct类型。

那么如何在其中声明一个包含其他结构数组的结构?

恩。

    unsafe struct Struct1{
      fixed int arrayInt[100]; // works properly 
      fixed Struct2 arrayStruct[100]; //not compile
    }

我的同事找到了这样做的工作方式。 我认为这是正确的方式。

    [StructLayout(LayoutKind.Sequential)]
     public struct Struct1
     {
           [MarshalAs(UnmanagedType.ByValArray, SizeConst = sizeOfarray)]
           private Struct2[] arrayStruct;
     }

你不能。 固定数组仅限于bool,byte,char,short,int,long,sbyte,ushort,uint,ulong,float或double。

请参阅http://msdn.microsoft.com/en-us/library/zycewsya%28v=VS.80%29.aspx

执行互操作的一种方法可能是在C ++中编写一个包装程序集,它可以转换为更加C#-interop友好的结构。

您不能将自定义类型与固定数组一起使用。 (有关详细信息,请参阅TTonis答案。)

我认为您应该使用MarshalAs属性来指定如何编组成员,而不是尝试使用特定的内存布局在C#中构造结构。 即使你设法让成员占用大量内存,你仍然会在元素之间填充,导致对齐问题。

您可以在结构中引用常规数组,并指定它应该被编组为ByValArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM