1
如何将System::Collections::ArrayList
(例如,包含System::String^
)转换为cli::array<String^>
的数组?如何从ArrayList转换为cli :: array?
如何将System::Collections::ArrayList
(例如,包含System::String^
)转换为cli::array<String^>
的数组?如何从ArrayList转换为cli :: array?
如果ArrayList在您的代码中并且您可以更改它,请考虑将其更改为List<String^>
。使用类,更多的可用LINQ的方法,并在该类中的正常内置方法会返回一个array<String^>
而不必通过任何箍跳的时候,你会得到类型安全,更干净的代码。
ArrayList上有一个内建方法来为你做这件事。调用ToArray,并指定要返回的数组的类型。
ArrayList^ list = ...;
array<String^>^ ar = reinterpret_cast<array<String^>^>(list->ToArray(String::typeid));
如果你正在做这与其他集合类型(即不使用泛型),你就必须做更多的事情手册。你可以手工做:
ArrayList^ list = ...;
array<String^>^ ar = gcnew array<String^>(list.Count);
for(int i = 0; i < list.Count; i++)
ar[i] = dynamic_cast<String^>(list[i]);
或者你可以使用Linq到ArrayList转换为IEnumerable<String^>
,然后将其转换成字符串数组。
ArrayList^ list = ...;
array<String^> ar = Enumerable::ToArray(Enumerable::OfType<String^>(list));
在托管代码中使用safe_cast。 –
reinterpret_cast直接从MSDN复制。 http://msdn.microsoft.com/en-us/library/fcyyh2hb.aspx并单击C++的语言。 –
好的,无视那个。得到OP使用'List'。 –