Convert System::object to string array

寵の児 提交于 2019-12-08 03:15:24

问题


I need to return four dimensional array of strings during the work of background worker which is receiving data via serial port.

In background worker:

    array<String^>^ Received = gcnew array<String^>(4);
    backgroundWorker1->ReportProgress(10,Received);

In report progress:

private: System::Void backgroundWorker1_ProgressChanged(System::Object^ sender,   System::ComponentModel::ProgressChangedEventArgs^  e)
{
    array<String^>^ Received2 = gcnew array<String^>(4);
    Received2 =(e->UserState);
}

I am getting:

error C2440: '=' : cannot convert from 'System::Object ^' to 'cli::array "

which is not a surprise, but how to convert and assign UserState to string array?


回答1:


You need to cast the object handle to an array handle then check for a nullptr to see if the cast was successful e.g:

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.
}


来源:https://stackoverflow.com/questions/13106860/convert-systemobject-to-string-array

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!