这是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; //保留};
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; //保留};
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
[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; //返回的数据内容
}
试试。
{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; //保留};
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;
}
我还是用char[]可以吗?