簡體   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