读书人

!C#模拟C的柔性数组运行出错?怎么处理

发布时间: 2012-05-08 22:09:41 作者: rapoo

紧急求助!!C#模拟C的柔性数组运行出错?怎么办
如题,我定义了这样一个结构体:

C# code
    [StructLayout(LayoutKind.Sequential)]     public struct STAGINFOPARAM    {        byte metaData;        UInt16 uEPCLength;        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]        Byte[] ucaEPC;        UInt16 uTagCRC;    };    [StructLayout(LayoutKind.Sequential)]    public struct SREADINVENTORYTAGINFORSPPARAM    {        Byte ucStatus;        UInt16 uMetadataFlag;        Byte ucOption;        Byte ucTagCount;        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0)]  // 如这里改为  SizeConst = 1 运行就不会出错        STAGINFOPARAM[] tagInfo;    };        Int32 nSize2 = Marshal.SizeOf(typeof(SREADINVENTORYTAGINFORSPPARAM)); // 一运行到这里就出错?    MessageBox.Show(nSize2.ToString());

请指导一下,我要如何做呢?







[解决办法]
size=0,不知如何去布局 STAGINFOPARAM 结构体
[解决办法]
出错就是表示0不允许.
以前我也遇到这个问题,不过用个笨办法处理了.就是结构里这个项个数有1,2,3,4,5种,然后就建了5个结构,

public struct SREADINVENTORYTAGINFORSPPARAM1
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]

public struct SREADINVENTORYTAGINFORSPPARAM2
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
...

读书人网 >C#

热点推荐