平台调用里 我定义了一个结构
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi )]
public struct TPParaBuf
{
public System.Int32 ComNo;
public System.Int32 Baud;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] Sys_Sec;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] User_Sec;
[MarshalAs(UnmanagedType.LPTStr)] public string AuthorNo;
}
调用的时候 如下:
TPParaBuf g = new TPParaBuf();
g.ComNo=System.Int32.Parse(TextBox1.Text.ToString().Trim());
g.Baud=System.Int32.Parse(TextBox2.Text.ToString().Trim());
g.Sys_Sec[0] = 1;
g.Sys_Sec[1] = 1;
g.Sys_Sec[2] = 1;
...
报错:g.Sys_Sec[0] = 1;未将对象引用设置到对象的实例。
想不通 请教~~
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi )]
public struct TPParaBuf
{
public System.Int32 ComNo;
public System.Int32 Baud;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] Sys_Sec;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] User_Sec;
[MarshalAs(UnmanagedType.LPTStr)] public string AuthorNo;
}
调用的时候 如下:
TPParaBuf g = new TPParaBuf();
g.ComNo=System.Int32.Parse(TextBox1.Text.ToString().Trim());
g.Baud=System.Int32.Parse(TextBox2.Text.ToString().Trim());
g.Sys_Sec[0] = 1;
g.Sys_Sec[1] = 1;
g.Sys_Sec[2] = 1;
...
报错:g.Sys_Sec[0] = 1;未将对象引用设置到对象的实例。
想不通 请教~~
这个struct在CLR这边的行为和普通的struct没有区别的