あきごろうTweet「Unityで学ぶC#入門」の連載第12回は「クラスの基本的な使い方を学ぶ」でした。第13回の今回はList(リスト)の基本的な使い方を学びます。データをまとまりとして保存する場合に利用するのが配列ですが、用途によっては配列が適切ではない場合があります。RPGのゲームでアイテムの一覧を変数に保存する場合、アイテムを増やしていく時に配列だとアイテム数に上限が出来てしまうので適切ではありません。このような場合に使うのがlistになります。今回はlistの基本的な使い方と配列との違いに焦点を当てて解説します。まとめList(リスト)とはlistとは、同じデータ型の値をまとめて保存し利用するためのものです。配列と似ていますが、配列と異なる点は要素数が固定ではないという点です。Listの方が少し処理に時間がかかるという点もあります。そのため、C#において複数のデータを同時に扱いたい場合に、データの要素を増減させる時はlistを使い、データ要素数が変わらない時は配列を使うことが多いです。配列については、第10回の講義で詳しく解説しているので、配列についても学びたい方は是非ご一読ください。配列の使い方へ移動Listの基本的な使い方ではまずListの基本的な使い方を解説していきます。基本的なListのメソッドの説明になります。要素の削除:Remove,RemoveAt,RemoveRange,ClearListの要素並び替え:Sort要素のインデックスの取得:IndexOf要素数の取得:Count要素の存在判定:Countains要素の検索:Find,FindLast,FindAll要素を逆順に並び替える:ReverseListを配列に変える:ToArrayListを使うために必要なGenericListを使う場合は、冒頭に以下のスクリプトが存在しなければならないので、必ず記述するようにしてください。(このGenericの1機能がListになるためです。System.Collections.Generic;Listの宣言:newListも変数の一種になるので、宣言する必要があります。Listの宣言方法は以下になります。List&lt;int&gt;();このスクリプトではint型のListを作成しましたが、String型やGameObject型など、Unityで使える型での宣言も可能です。Listの初期化Listを初期化する場合は以下のスクリプトを使用します。List&lt;int&gt;();考え方はシンプルで、既に作成したListに新しい空白のListをnewで宣言してあげればよいのです。要素の追加:Add,InsertListは要素を追加できる配列のようなものなので、要素を追加したい場合は以下のスクリプトを利用します。4);上記は末尾に追加する方法と指定したn番目に追加する方法になります。注意事項として、先頭の要素を0番目と扱うので先頭に挿入する場合は0を、n-1番目を選択したい場合はnをInsertで指定する必要があります。int型Listがn個の要素を持っている時のn番目は以下のような対応になっています。複数要素を同時追加:AddRange,InsertRangeListに複数要素を同時に追加することもできます。この場合は他のListもしくは配列(Array)を追加することになるので、事前に準備が必要です。スクリプトは以下になります。要素を更新する方法は以下になります。1;追加と同様、要素の指定は(n+1)でn番目を指定できるのでご注意ください。要素の取得Listの要素を取得したい場合は以下のスクリプトを使います。list[0];追加と同様、要素の指定は(n+1)でn番目を指定できるのでご注意ください。要素の削除:Remove,RemoveAt,RemoveRange,ClearListの要素を削除したい場合、以下のスクリプトを使います。あるn番目を削除、m~n番目の要素全てを削除、全て削除、指定した値が含まれている要素を削除などが行えます。list.Clear();1234567891011//3番目の要素を削除list.RemoveAt(2);//要素"100"を削除するlist.Remove(100);//2番目~5番目の要素を削除するlist.RemoveRange(1,4);//全ての要素を削除するlist.Clear();Listの要素並び替え:Sort要素を昇順や降順に並び替えることもできます。この場合に使用するメソッドはSortです。a);ちなみに、Sortの処理速度ですが基本的にはList.Sortの方がラムダ式のソートより速くなります。要素のインテックスの取得:IndexOf指定した値を持つ要素が何番目の要素なのかを取得することもできます。その際に使用するスクリプトは以下です。List1.IndexOf(100);指定した要素が見つかった場合、「0」から始まるインデックス番号を返します。一方で見つからなかった場合には「-1」を返します。要素数の取得:CountListに何個の要素が存在するのかを取得することもできます。その際に使用するスクリプトは以下です。list.Count;要素の存在判定:CountainsListの要素の中に「100」が存在するかどうかを判定することができます。list.Contains(100);この関数で返ってくる値はBool値(true/false)なので、Bool型の変数を用意する必要があります。要素の検索:Find,FindLast,FindAll条件を設定して、その条件に当てはまる要素を取得することもできます。この際に使用するメソッドはFind,FindLast,FindAllになります。FindはListの先頭から順番に検索し、最初に当てはまるものを返すメソッドになります。FindLastは後ろから検索し、最初に当てはまるものを返すメソッドになります。FindAllは条件に当てはまる要素全てを返すメソッドになります。偶数の要素を抽出したい場合に使うスクリプトは以下になります。//Findで6が返ります。//FindLastで10が返ります。//FindAllでは6,2,8,10が返ります。(6,7,2,8,10);//Findで6が返ります。0);//FindLastで10が返ります。==0);//FindAllでは6,2,8,10が返ります。0);要素を逆順に並び替える:ReverseListの要素を逆順にする関数も存在します。「5,6,1,3,9」というlistが存在した場合、RevListには「9,3,1,6,5」が代入されます。list.Reverse();Listを配列に変換する:ToArrayListを配列に変換することもできます。list.ToArray();Listの実践的な使い方Listには様々な使用例がありますが、その中でもよく使用する、複数メソッドを組み合わせたスクリプトをご紹介します。全ての要素を取得する末尾の要素を取得する下記を参考にし、自らの実現したい動作を作れるようになりましょう。全ての要素を取得するListの全ての要素を抽出することも、メソッドを複数組み合わせることで実現することができます。listとforeachになります。int);}実行結果はもちろん1,2,3,4,5となります。末尾の要素を取得する末尾の要素を取得したい場合にcountとn番目の要素取得を組み合わせて実現します。List1でのスクリプトは以下になります。);list.Countで要素数を抽出し、要素数-1が末尾の要素になるので、list.Count-1としています。まとめいかがでしたでしょうか。今回はC#のListについてご紹介してきました。「どのくらいの値を管理するかわからないから、保存する値の数を定義できない」という時に配列の代わりにListを使ってください。Listの基本的なメソッドは全て記載しているので、本記事をリファレンス代わりに使用していただけると幸いです。gardenお問い合わせはこちらから※「XR-Hub」商標出願中CloseTwitterでAR/VRの最新情報を受け取る。