如果我的结构实现了 IDisposable,在 using 语句中使用时它会被装箱吗?
Thanks
编辑:
这个 timedlock 是一个结构体并实现了 Idisposable。http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
编辑2:查看IL似乎如果您的结构将Dispose()公开为公共,那么当结构的实例超出范围时,如果您忘记调用Dispose()(例如,您没有使用“使用”声明)?
Per 埃里克·利珀特 http://web.archive.org/web/20101206183156/http://billrob.com/archive/2006/05/12/idisposable-on-a-struct.aspx:
对结构体上的 IDisposable.Dispose 的调用是作为受约束的虚拟调用生成的,大多数情况下不会对值进行装箱。
如果虚拟方法未由该类型实现,则对值类型的受约束虚拟调用仅对值进行装箱。虚拟方法不能由值类型实现的唯一情况是,该方法是 ToString,并且由基类 System.ValueType 实现。
有关更多详细信息,请参阅 CLI 文档第 III 部分的 2.1 节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)