Marshal.SizeOf报“不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量“错误。

兵工厂三剑客 2016-10-09 03:42:12

class A
{
public enum Modles
{
CA3024C,
CA3021,
CA5202S
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("{0}", Marshal.SizeOf(typeof(A.Modles)));
Console.ReadKey();
}
}


上面那段代码报如下错误:

System.ArgumentException”类型的未经处理的异常在 mscorlib.dll 中发生

其他信息: 类型“封送问题.A+Modles”不能作为非托管结构进行封送处理;无法计算有意义的大小或偏移量。



今天在开发中,遇到了和上面同样的报错问题,于是写了个上面的例子来重现错误。报错的地方是在一个老外的源代码里面,报错地方代码的对象类型跟上面的差不多,都是在调用 Marshal.SizeOf方法返回枚举对象的非托管大小时报错。


第一次遇到这个问题,该如何解决。
...全文
1781 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_43587302 2019-02-27
  • 打赏
  • 举报
回复
我也遇到了这个问题
string name = pd.name;
int len = System.Runtime.InteropServices.Marshal.SizeOf(name);
qq_40295757 2017-11-28
  • 打赏
  • 举报
回复
Mark~~
诺诺诺诺N 2017-07-17
  • 打赏
  • 举报
回复
lz解决了吗,我遇到同样的问题

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧