我实现了一个TransformManyBlock<Tin,Tout>
,我想知道当我在块中返回一个空IEnumerable
时,空IEnumerable
会保留在系统中的任何位置,还是会被垃圾收集或丢弃我?显然,如果我改为使用IEnumerable
,我需要处理这样的TransformBlock
,但我想知道这是否已由TransformManyBlock
的库处理。
我想我想知道的是TPL是否会为我处理那个空的IEnumerable,或者我是否需要自己处理它。
答案 0 :(得分:2)
IEnumerable<T>
没有实现IDisposable
,大多数(如果不是全部)IEnumerable<T>
的标准实现也不会实现IDisposable
。因此,如果您实际返回需要处理的集合实例,则TPL不会为您处置它。
但是如果你想要返回一个空的可枚举,那真的不应该这样,因为在这种情况下你可以返回Enumerable.Empty<T>()
或new T[0]
。
实际上,我认为你很困惑&#34;处理&#34;和&#34;垃圾收集&#34;。
只要没有更多的引用指向它,就可以使用空的枚举进行垃圾收集。
所以,总结一下:你不必担心,除非你想要返回一个非常奇特的可枚举实现。