gpt4 book ai didi

c# - 如何使用委托(delegate)构建 TransformManyBlock

转载 作者:太空狗 更新时间:2023-10-30 01:02:32 24 4
gpt4 key购买 nike

我是 C# TPL 和 DataFlow 的新手,我正在努力研究如何实现 TPL DataFlow TransformManyBlock。我正在将一些其他代码翻译成 DataFlow。我的(简化的)原始代码是这样的:

private IEnumerable<byte[]> ExtractFromByteStream(Byte[] byteStream)
{
yield return byteStream; // Plus operations on the array
}

在另一种方法中,我会这样调用它:

foreach (byte[] myByteArray in ExtractFromByteStream(byteStream))
{
// Do stuff with myByteArray
}

我正在尝试创建一个 TransformManyBlock 来生成来自较大输入数组(实际上是二进制流)的多个小数组(实际上是数据包),因此 in 和 out 都是类型字节[]

我尝试了下面的内容,但我知道我做错了。我想使用与以前相同的函数构造此 block ,并将 TransformManyBlock 包裹在它周围。我收到错误消息“调用不明确...”

var streamTransformManyBlock = new TransformManyBlock<byte[], byte[]>(ExtractFromByteStream);

最佳答案

编译器在推断类型时遇到麻烦。您需要明确指定委托(delegate)类型以消除调用歧义:

var block = new TransformManyBlock<byte[], byte[]>(
(Func<byte[], IEnumerable<byte[]>>) ExtractFromByteStream);

或者您可以使用调用该方法的 lambda 表达式:

var block = new TransformManyBlock<byte[], byte[]>(
bytes => ExtractFromByteStream(bytes));

关于c# - 如何使用委托(delegate)构建 TransformManyBlock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33608678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com