这是C\C++中的结构定义
struct RETURNLIST
{int  iHour;   //时int  iMinute;   //分int  iSecond;   //秒char strList[30][30]; //返回的数据内容 char strHold1[30]; //保留};请问该结构在C#中如何定义??public struct RETURNLIST
{public int  iHour;   //时public int  iMinute;   //分public int  iSecond;   //秒[MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
public char strList//???关键是该项??? SizeConst 写多少???这是个二维数组[MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
public char[] strHold1; //保留};

解决方案 »

  1.   

    C++ C#   
    char* string   
    传出的char* StringBuilder   
    short short   
    char byte   
    char[n] fixed byte[n]   
    http://topic.csdn.net/u/20101021/21/a2e442a2-edd0-4d26-b79b-40c6c33fd810.html
      

  2.   


        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public class Struct
        {        public int iHour; //时        public int iMinute; //分        int iSecond; //秒        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
            public strList[] strList; //返回的数据内容  
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
            public byte[] strHold1; //保留 
        }
        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        public struct strList
        {        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
            public byte[] strList; //返回的数据内容 
        }
    试试。
      

  3.   

    public struct RETURNLIST
    {public int  iHour;   //时public int  iMinute;   //分public int  iSecond;   //秒[MarshalAs(UnmanagedType.ByValArray, SizeConst = 900)]
    public char[] strList//抓住重点,保证这个元素占用的内存空间跟C中一样大就可以了,一维,二维都可以处理的[MarshalAs(UnmanagedType.ByValArray, SizeConst = 30)]
    public char[] strHold1; //保留};
      

  4.   

    试试这个:[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet=System.Runtime.InteropServices.CharSet.Ansi)]
    public struct RETURNLIST {
        
        /// int
        public int iHour;
        
        /// int
        public int iMinute;
        
        /// int
        public int iSecond;
        
        /// char[900]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst=900)]
        public string strList;
        
        /// char[30]
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst=30)]
        public string strHold1;
    }
      

  5.   

    把char[]写成byte[]....
    我还是用char[]可以吗?