c# – 结构向实例大小添加任何开销?

具体来说,如果我创建一个具有单个字段的结构体,那么这个结构实质上就是围绕这个值的包装器,可以将这个结构传递给一个预期为底层类型的 P/Invoke方法吗?

我正在使用一个本地库,其API涉及到很多指针到struct类型,我想使用比IntPtr更有类型的东西来保持它们的一致性,通过将IntPtr包装在通用结构体中.会工作吗(已经完成了吗?)

解决方法

那么不要把它当成一个结构体.

而不是通过P / Invoke直接了解如何直接执行此操作,只需将P / Invoke方法保留为私有,并公开将直接使用包装器类型的公共方法,并处理您需要执行的任何传递方式.然后,您的代码只会使用这些公共方法,而不必担心不安全的结构:)

混合不同的类型,并期待他们神奇地工作是灾难的秘诀.让自己明确,不要依赖隐藏和隐含的强制投降.

最好的事情是,它允许你很容易地使用一些实际上是安全的指针包装器 – 你可以把它作为参考,如果它丢失了,你可以根据需要使用一个终结器去处理非托管资源.看看SafeHandle和它的后代如何为一个伟大的样品工作.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...