如何使用c将参数传递给ref参数

本文关键字:ref 参数 参数传递 何使用 | 更新日期: 2023-09-27 18:22:16

在这段代码中,我想将一些值传递给线程内的方法。我该怎么做?请帮帮我…

private void onMessageReceivedThreading(ref SMSDeliver myMessage)
{
    onreceiveThread = new Thread(()=> onMessageReceived(myMessage));
    onreceiveThread.Start();
}

如何使用c将参数传递给ref参数

您可以考虑将其分配给一个局部变量,例如:

private void onMessageReceivedThreading(ref SMSDeliver myMessage)
{
      var mess = myMessage; 
      onreceiveThread = new Thread(()=> onMessageReceived(mess ));
      onreceiveThread.Start();
}

值得一提的是(从帖子中还不清楚)如果

  • myMessage是一个引用类型,您仍然将引用到类型的同一实例,因此可能会遇到一些并发问题。请注意这一点。

  • myMessage是一种值类型,这里可能不会发生并发问题(当您复制时,创建一个结构的新实例),但您需要注意的是,如果onMessageReceived以某种方式影响mess的状态,请在线程执行完成后合并对原始myMessage实例的更改。