Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当微软声明“微软”时,它指的是什么;“克隆”;TPL数据流广播块中的消息<;T>;?_C#_Task Parallel Library_Clone_Tpl Dataflow - Fatal编程技术网

C# 当微软声明“微软”时,它指的是什么;“克隆”;TPL数据流广播块中的消息<;T>;?

C# 当微软声明“微软”时,它指的是什么;“克隆”;TPL数据流广播块中的消息<;T>;?,c#,task-parallel-library,clone,tpl-dataflow,C#,Task Parallel Library,Clone,Tpl Dataflow,我指的是MSDN中的以下链接: 它声明链接到目标的消息是“克隆的” 我想知道MS在这里指的是什么类型的克隆,深度克隆?它到底是如何影响内存消耗的?当您创建一个广播块时,您定义了克隆功能,因此完全负责它的工作方式。如果要通过引用传递,请不要在克隆函数中对对象执行任何操作: newbroadcastblock(x=>x,选项) 如果你想要深度复制,你必须自己做。broadcast块对它正在处理的数据一无所知。它只知道当消息已满时会丢弃消息,当它将数据传递到管道中时会调用您的函数 另外,Broadca

我指的是MSDN中的以下链接:

它声明链接到目标的消息是“克隆的”


我想知道MS在这里指的是什么类型的克隆,深度克隆?它到底是如何影响内存消耗的?

当您创建一个
广播块时,您定义了克隆功能,因此完全负责它的工作方式。如果要通过引用传递,请不要在克隆函数中对对象执行任何操作:

newbroadcastblock(x=>x,选项)

如果你想要深度复制,你必须自己做。
broadcast块
对它正在处理的数据一无所知。它只知道当消息已满时会丢弃消息,当它将数据传递到管道中时会调用您的函数

另外,
BroadcastBlock
允许您为
cloningFunction
传递null,这可以有效地让您传递数据而无需操作

private TOutput CloneItem(TOutput item)
{
    return _cloningFunction != null ?
        _cloningFunction(item) :
        item;
} 


当然是深度克隆,你有证据证明它没有这样做吗?@Program宝藏,因此使用BroadcastBlock时,内存消耗将是内存消耗量的n倍,与迭代链接到目标块并手动将数据项发布到这些块相比,我是否忽略了一个选项,该选项强制广播块传递数据项引用而不是数据克隆?@programtreasures这不是
BroadcastBlock
的工作方式;克隆函数在块创建期间作为lambda提供。因此,它可以是满足签名
Func
的任何内容。块本身并不决定发生什么类型的复制,即浅/深。很好,请看一看,谢谢。然后,我发现MSDN中的“克隆”一词非常令人困惑。