gpt4 book ai didi

c# - 如何在 lambda 表达式中传递 ref 参数? - 线程问题

转载 作者:行者123 更新时间:2023-11-30 14:56:11 30 4
gpt4 key购买 nike

我有一个方法要调用。

public void RecordConversation(ref ChannelResource cr)
{
VoiceResource RecordResource = TServer.GetVoiceResource();
RecordResource.MaximumTime = 6000;
RecordResource.MaximumSilence = 6000;
RecordResource.TerminationDigits = "";
}

在线程中调用

Thread recordThread = new Thread(() => RecordConversation(ref ChanResource));
recordThread.Start();

当然我们会得到一个错误。

Cannot use ref or out parameter 'ChanResource' inside an anonymous method, lambda expression, or query expression

如何解决?

最佳答案

为什么会出现这个错误?

The scope of the parameters of an anonymous method is the anonymous-method-block.

(强调我的)

lambda 表达式本质上与匿名方法相同。

根据文档,参数的范围仅限于其 block 。

但是 refout 超出了范围,因此出现了错误。我建议您不要使用 ref,因为默认情况下参数是按值传递的,如果是引用类型,reference 的值已通过。

您可以直接修改参数以反射(reflect)该更改。

关于c# - 如何在 lambda 表达式中传递 ref 参数? - 线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476543/

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