【C#】Listを使う

Listは、インデックスを使用してアクセスできる、厳密に型指定されたオブジェクトのリストを表します。 配列のような形で、好きな型を複数格納し、出し入れができます。 このLisTの使い方がイマイチよくわからなかったので、少し勉強をしてみることにしました。

List

Listは、簡単に利用すると以下の様な感じになります。 [c] using System.Collections.Generic;

//初期化 var list = new List (); //格納 for (int i = 0; i < 10; i++) { list.Add (i); } //取り出し foreach (var value in list) { Debug.LogError ("格納されているint型:" + list[value]); }

//格納されているint型:0 //格納されているint型:1 ..................... //格納されているint型:9

//消去 list.Clear ();

[/c]

Contains

ある要素が List 内に存在するかどうかを調べてる時に利用するのが、[Contains]です。 これは、List型の要素を検索し、条件にあっているかどうかbool型で返却をします。 [c] var data = new List(); data.Add("nishikawa"); data.Add("tanaka"); data.Add("kudou"); data.Add("inoue");

if (data.Contains ("kudou")) { Debug.LogError ("true"); }

[/c]

Where

List内から、検索条件を指定して要素を取り出します。 [c] var list = Enumerable.Range(0, 10).ToList(); // 5以上の数字を格納したListを返します var hoges = list.Where (x => x > 5).ToList (): [/c]

Select

Listの要素を操作できる。 [c] // 要素同士を掛けあわして、Listで返している var list = Enumerable.Range(0, 10).Select(x => x * x).ToList(); [/c]

SelectMany

先ほどのSelectと似ているが、少し使い方が違う。 イメージとしては、元のListとは違うListを作る感じで、foreachが連続して使っている場所がすっきりとします。 [c] // Listの中にあるListを返す処理 var manyHoge = new List<List> (); manyHoge.Add (listChild); manyHoge.Add (listChild2); var mamaHoge = manyHoge.SelectMany(names => names).ToList();

[/c] 詳しくはこちらを参考に。 九九だけじゃない!アプリ開発にもゲーム開発にも使える、SelectMany! - Qiita

ForEach

foreachを簡単に使えます。 [c] list3.ForEach (x => { Debug.LogError("list3の要素:" + x); }); [/c]

Exists

Listの中に条件にあったものがあるかをbool型で返します。 [c] // 10以上の数字があるかどうか bool listBool = list.Exists (x => x > 10); [/c]

Find

先ほどのExistsと似ているのですが、こちらは条件にあった最初の要素を返します。 [c] // 要素に4があれば var num = list.Find (x => x.Equals (4)); [/c]

RemoveAll

条件にあった要素を削除します。 [c] // 4以上の要素を削除します。 list.RemoveAll (x => x > 4); [/c]

最後に

これはList型だけではないのですが、foreachを使う場面で、上記のように色々メソッド(拡張メソッド)があるので、できればコードを短くかつ読みやすく書いていきたいですね。 おそらく、今回挙げたメソッド以外にも便利なものがあるはず。

【参考】 インデックスを使用してアクセスできる、厳密に型指定されたオブジェクトのリストを表します。

独習C# 第3版独習C# 第3版
ハーバート・シルト,エディフィストラーニング株式会社 矢嶋聡

翔泳社
売り上げランキング : 19359

Amazonで詳しく見る