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

前端之家收集整理的这篇文章主要介绍了c# – 结构向实例大小添加任何开销?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
具体来说,如果我创建一个具有单个字段的结构体,那么这个结构实质上就是围绕这个值的包装器,可以将这个结构传递给一个预期为底层类型的 P/Invoke方法吗?

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

解决方法

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

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

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

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

原文链接:https://www.f2er.com/csharp/97758.html

猜你在找的C#相关文章