[Unity] List の便利な使い方


Add() や Clear() だけじゃない

T[](配列)に戻したり、検索したり、集めたり、いろいろなことができます。
ここでは、よく使えるものだけをまとめておきます。

こんなクラスがあるのが前提

public class Marking
{
        public string Message = "";
}

こんなリストがあるのが前提

var resultList = new List<Marking>();
resultList.Add(new Data { Message = "Enemy" });
resultList.Add(new Data { Message = "Enemy2" });
resultList.Add(new Data { Message = "Player" });

T[](配列)にする - ToArray

Marking[] tempArray = resultList.ToArray();

(おまけ)配列からリストにする - ToList

List<marking> tempList = tempArray.ToList();

探す - Find

Marking tempItem = resultList.Find(item => item.Message == "Enemy");
見つからなかったら、nullが返ります。
前回も参照のこと

集める - FindALl

List<marking> tempItems = resultList.FindAll(item => { return item.Message == "Enemy"; });
新しいListを作ります。
=>の後ろに{}をつけることで、複数行の記述ができるようになりますよ。最後にreturnで結果を渡しましょう(関数と同じですね)。

指定したものをまとめて削除 - RemoveAll

resultList.RemoveAll(item => item.Message.StartsWith("Enemy"));
これは、"Enemy"の文字列から始まるものを全部削除するので、"Player"だけが残ります。
FindAllと違って、新しいListを返すわけではないので注意です。

中身を変更する - ConvertAll

List<marking> tempItems = resultList.ConvertAll(item => { item.Message += " (Clone)"; return item; });
これは、Messageに" (Clone)"を追加して、新しいリストを返してもらう例です。
"Enemy (Clone)" とか "Player (Clone)" になります。
最後にreturnでitemを返していますが、item.Messageを返すとList<string>のリストを返すこともできます。




だいたいこんな感じ

これらが使えれば、きっと他のも使えるようになると思います。

ソート(並び替え)は?

また別の話へ・・・

みんな大好きになる、Linqを使ってソートへ

0 件のコメント :

コメントを投稿