假设我编写了一个实现IEnumerable
接口的类,并返回一个IEnumerator
,它不仅仅是因为是枚举器而需要IDisposable
,而是因为它具有需要在枚举完成后进行Dispose()
的托管资源,只要我的枚举器在其IDisposable
实现中正确地处理这些托管资源,我能相信以下代码会Dispose()
那些托管资源吗?
return (new MyClass()).Select(x => x);
编辑:这个问题看起来与那个被管理员标记为类似的问题相似,但在我看来语义上不同(在我提出问题之前就看到了)
Dispose()
中加入一个Console.WriteLine()
并查看它是否被触发。 - Matt RowlandMyClass
实现了IDisposable
接口,那么Dispose()
方法将被调用。垃圾回收器不会调用Dispose()
方法。 - Matt RowlandMyClass
的问题不对。在 OP 的代码中,.Dispose
不会 在new MyClass()
上被调用。 - EnigmativityDispose()
方法中放置一个Console.WriteLine()
来检查它是否会这样做。 - Matt RowlandDispose()
不会从垃圾回收中调用。因此,“托管资源”。 - humanoidanalog