【初心者Unity】ListやArrayListを配列に変換しよう!
はじめに
前回の記事では、配列をArrayListやLsitに変換する方法をご紹介しました。今回はその流れに乗って、ListやArrayListを配列に変換する方法をご紹介します!
List・ArrayListを配列に変換する
それでは早速List、ArrayListを配列に変換してみましょう。
前回までの変換同様、ArrayList、Listと配列の違いに着目すると、List、ArrayListは要素の個数を後から変動させることが可能なのに対し、配列は要度の個数が厳格に決まっています。つまり今回は、ルーズなList、ArrayList→要素の数に厳しい配列という変換であるため、特殊な変換を必要とします。
それでは、以下で実際の変換を見てみましょう。
↓List→配列の変換
//List「list」の定義 List<string> list = new List<string> { "aaa", "bbb", "ccc" }; //Listを配列「array」に変換している String[] array = list.ToArray();
↓ArrayList→配列の変換
//ArrayList「list」の定義 ArrayList list = new ArrayList() { "aaa", "bbb", "ccc" }; //ArrayListを配列「array」に変換している String[] array = (String[]) list.ToArray(typeof(string));
ご覧の通り、List→配列にしてもArrayList→配列にしても「ToArray()」メソッドを使っています。配列からの変換の際には特に特殊なメソッドを必要とはしませんでしたが、今回の変換には必要となるんですね。。。
また、List→配列の変換ではToArray()メソッドを使う以外には特に特殊な操作を必要としないのに対し、ArrayList→配列の変換では、ToArray()メソッドを使う他に、キャストを必要としています。キャストとは、型を変換することです。Listでは必要のない型変換がArrayListでは必要となる理由は、List、ArrayListの違いに寄るものです。ListとArrayListの違いとして、Listは要素の型が明確に定まっているのに対して、ArrayListは要素の型が定まっていないということが挙げられます。したがって、要素の型が定まっているListは、配列の型とListの型がそろってさえすればキャストなしでそのまま変換ができるのに対して、要素の型が定まっていないArrayListは、ArrayList内の要素の型を明示してから変換する必要があり、そのためにキャストをしています。
おわりに
いかがでしょうか?前回の配列→List、ArrayListの変換に比べ、やや複雑になったかと思います。とはいえ、複雑化はList、ArrayList、そして配列の違いに起因しており、これらの特徴を抑えておくことで、楽々変換することができるかと思います。
次回は、これまで取り上げてきた配列、List、ArrayListの流れに乗り、これらの要素一つ一つを「楽々」操作する方法をご紹介します。定石に従いfor文を使った操作も可能ですが、「楽々」とは言えません。foreach文を活用することで「楽々」を生み出します。乞うご期待!