我阅读了一个类似问题的答案,其中一部分回答如下:
当结构体作为参数传递时,它们会按值传递:它们被复制。现在你有两个具有相同内部字段的结构体,它们都将尝试清理相同的对象。其中一个将首先发生,因此在之后使用另一个的代码将开始出现神秘故障...然后它自己的清理也将失败
这个问题不也适用于Dispose()
吗?如果结构体可以实现IDisposable
,那么为什么不允许它们有终结器呢?
如果终结器的整个目的是在程序员忘记调用Dispose()
的情况下调用Dispose(false)
,并且结构体可以有IDisposable.Dispose()
,那么为什么不允许结构体有终结器,但允许引用类型有终结器呢?