gpt4 book ai didi

.net - 如何从 ArrayList 转换为 cli::array?

转载 作者:行者123 更新时间:2023-12-04 05:30:21 26 4
gpt4 key购买 nike

如何从 System::Collections::ArrayList 转换(例如包含 System::String^)到 cli::array<String^> 的数组?

最佳答案

如果 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));

关于.net - 如何从 ArrayList 转换为 cli::array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712487/

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