为什么使用结构,而不是
问题描述:
类
时候会有AccessViolationException当我传递一个struct
一些PInvoke
方法,我会收到错误为什么使用结构,而不是
未处理的异常:System.AccessViolationException:尝试读取或写入 保护记忆。这通常表明其他内存已损坏。
当我使用类,那么它是确定的。
我想知道背后的任何原因?
答
在this文章MSDN状态:
默认情况下,本地和管理结构在 内存不同的布局,如此成功地横穿管理的 结构/非托管边界需要额外的措施来保护数据 完整性。
您还可以在那里使用PInvoke时找到可以派上用场的其他信息。
完全取决于有问题的代码。 – SLaks 2012-02-08 15:29:46
如果您将结构传递给按值传递参数,则其值将被复制。如果你传递一个类,那么这个类的引用就会被复制。为了能够给你一个正确的答案,我们需要知道你所处的情况。 – haiyyu 2012-02-08 15:35:54
你想要使用哪种方法进行PInvoke以及你的结构定义是什么样的? – 2012-02-08 15:36:49