2

(たとえばSystem::Collections::ArrayListを含む)から配列に変換するにはどうすればよいですか?System::String^cli::array<String^>

4

1 に答える 1

3

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));
于 2012-10-03T16:24:10.447 に答える