有一个类 A 和一个类 B,它们都被 [StructLayout(LayoutKind.Sequential)] 修饰,
在类 A 中定义一个类 B 的数组,如下:[StructLayout(LayoutKind.Sequential)]
public class A
{
[MarshalAs(UnmanagedType.LPArray,SizeConst=10)]
public B[] b;
}如果类 B 占4个字节,那么类 A 就应该是40个字节大小,但用 Marshal.SizeOf(typeof(A))时报错!
错误内容:
未处理的“System.ArgumentException”类型的异常出现在Test.exe中。
其他信息:类型Test.A 不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。哪位高手知道为什么?请赐教!谢谢!
在类 A 中定义一个类 B 的数组,如下:[StructLayout(LayoutKind.Sequential)]
public class A
{
[MarshalAs(UnmanagedType.LPArray,SizeConst=10)]
public B[] b;
}如果类 B 占4个字节,那么类 A 就应该是40个字节大小,但用 Marshal.SizeOf(typeof(A))时报错!
错误内容:
未处理的“System.ArgumentException”类型的异常出现在Test.exe中。
其他信息:类型Test.A 不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。哪位高手知道为什么?请赐教!谢谢!
http://blog.sunmast.com/Sunmast/archive/2005/04/19/1739.aspx
搞了一天,也没搞定,原来是Bug,谢谢大侠提醒,立即给分结贴。