以菊花链方式链接多个修改相同TInput
元素的块时,我可以使用ActionBlock<TInput>
或TransformBlock<TInput,TInput>
,不同之处在于Transform的委托将返回相同的(但修改后的元素) )虽然Action委托不会返回任何内容,但它只会修改输入元素。
两者都有效,而且我认为两者在语义上都有一定的意义,但我假设其中只有一种是预期的方式。
如果我不得不猜测,我会说它是Action,因为当返回相同的元素时,它并不是真正的转变。但是,如果我不得不猜测更实际的原因,我会说变换,因为如果我菊花链接这些块变换似乎允许我直接将“已处理”元素发布到下一个块,不知道我如何强制执行与行动。
答案 0 :(得分:0)
如果要修改块中的对象,然后在另一个块中使用它,那么唯一正确的选项是使用TransformBlock
。我说它是一个转换:生成的对象与原始对象具有相同的标识,但它在块中被修改(或“转换”)。
ActionBlock
最常用作管道的终点,是最后一步。这不是你想要的,所以ActionBlock
是不恰当的。