1

我实现了一个,我想知道当我在块中TransformManyBlock<Tin,Tout>返回一个空时,该空会保留在系统中的任何位置,还是会被垃圾收集或丢弃?显然,如果我改用 a ,我需要自己处理这种情况,但我想知道这是否已经由.IEnumerableIEnumerableIEnumerableTransformBlockTransformManyBlock

我想我想知道的是 TPL 是否会为我处理那个空的 IEnumerable 的处理,或者我是否需要自己处理它。

4

1 回答 1

2

IEnumerable<T>没有实现IDisposable,并且大多数(如果不是全部)标准实现IEnumerable<T>也没有实现IDisposable。因此,如果您实际上返回需要处置的集合的实例,TPL 不会为您处置它。
但是,如果你想返回一个空的可枚举,这真的不应该是这样,因为在这种情况下你可以只返回Enumerable.Empty<T>()or new T[0]

实际上,我认为您混淆了“处置”和“垃圾收集”。
一旦没有更多指向它的引用,空的可枚举将可用于垃圾收集。

因此,总结一下:您不必担心这一点,除非您想返回一个非常奇特的可枚举实现。

于 2013-02-15T09:51:26.990 回答