String 将System::object转换为字符串数组

String 将System::object转换为字符串数组,string,c++-cli,String,C++ Cli,我需要返回字符串的四维数组,在后台工作人员通过串口接收数据的过程中 后台工作人员: array<String^>^ Received = gcnew array<String^>(4); backgroundWorker1->ReportProgress(10,Received); array^Received=gcnewarray(4); backgroundWorker1->报告进度(10,已收到); 正在报告的进展情况: private:

我需要返回字符串的四维数组,在后台工作人员通过串口接收数据的过程中

后台工作人员:

    array<String^>^ Received = gcnew array<String^>(4);
    backgroundWorker1->ReportProgress(10,Received);
array^Received=gcnewarray(4);
backgroundWorker1->报告进度(10,已收到);
正在报告的进展情况:

private: System::Void backgroundWorker1_ProgressChanged(System::Object^ sender,   System::ComponentModel::ProgressChangedEventArgs^  e)
{
    array<String^>^ Received2 = gcnew array<String^>(4);
    Received2 =(e->UserState);
}
private:System::Void backgroundWorker1\u ProgressChanged(System::Object^sender,System::ComponentModel::ProgressChangedEventArgs^e)
{
数组^Received2=gcnew数组(4);
Received2=(e->UserState);
}
我得到:

错误C2440:“=”:无法从“System::Object^”转换为“cli::array”


这并不奇怪,但是如何将
UserState
转换并分配给
string array

您需要将对象句柄强制转换为数组句柄,然后检查nullptr以查看强制转换是否成功,例如:

array<String^>^ Received2 = dynamic_cast<array<String^>^>(e->UserState);
if (Received2 != nullptr)
{
    // Cast was successful, safe to use Received2.
}
else
{
    // Cast failed, do not use Received2.
}
array^Received2=dynamic\u cast(e->UserState);
if(Received2!=nullptr)
{
//Cast成功,可安全使用2。
}
其他的
{
//强制转换失败,请不要使用Received2。
}