加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:10:05 所属栏目:百科 来源:网络整理
导读:具体来说,如果我创建一个具有单个字段的结构体,那么这个结构实质上就是围绕这个值的包装器,可以将这个结构传递给一个预期为底层类型的 P/Invoke方法吗? 我正在使用一个本地库,其API涉及到很多指针到struct类型,我想使用比IntPtr更有类型的东西来保持它们的
具体来说,如果我创建一个具有单个字段的结构体,那么这个结构实质上就是围绕这个值的包装器,可以将这个结构传递给一个预期为底层类型的 P/Invoke方法吗?

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

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读