今見てくれてる人の数

ホンキートンク・スーダラブルース

ゆるコラム、oF、邦ロックや歌謡曲、小説の感想。ドラクエ、JavaScript、ドラゴンボール超など。湘南あたりを転がってる石コロのゆるゆる生きてく超雑多な軌跡です。

Unity C#のコレクションってなんぞや 〜もっと自由に配列扱いたくて〜

UnityでC#書いてて
普段jQueryを主に書いている私はC#の配列操作が謎で困りました。。


(サイズの決まってない配列の扱いとか、、json受け取るとき何で受け取ればいいんだとか)そんな時出会ったのが噂の「コレクション」です。

コレクション、、壮大で難解なイメージでしたが、
「用途によって使い分けてね💓  いろいろこれくしょんしたよ。」
って感じでした。

C#では、多数のオブジェクトをまとめて扱う場合、
配列の他に「コレクション」と呼ばれるクラスを利用することができます。
コレクションは、 System.Collectionsというパッケージにまとめられています。

▫️参考

コレクションを利用しよう(1/6):初心者のためのC#プログラミング入門

ArrayList
List
Hashtable
Dictionary
Queue (怖いので今回触れない)
Stack (怖いので今回触れない)
などがあるそうです。

 ArrayList

オブジェクトを順番付けして管理するためのコレクションです。
平たくいえば、「配列とだいたい同じような扱い方ができるコレクション」

using System;
using System.Collections; // これ忘れず

ArrayList list = new ArrayList();
list.Add("hoge");
list.Remove("hoge");
list[0] =  "hoge";
int num = list.Count;   // 要素数

 List

ArrayListとだいたい同じ
決まった種類のオブジェクト(今回はstring)だけを保管しておくような場合に使用。
ArrayListと同じメソッドが用意されてる

using System;
using System.Collections.Generic; // さっきと変わりました、ジェネリックです

List<string> list = new List<string>();
list.Add("One");  // とか一緒

// おまけのforeach
foreach(String str in list){
    Debug.Log(str);
}

 Hashtable

一般に「連想配列」とか「ハッシュ」とかいわれるもの。
インデックス番号を使わずにキーでオブジェクトを管理。

using System;
using System.Collections;

Hashtable table = new Hashtable();
table.Add("tom","tom@hogehoge.com");
table["tom"] = "tom@hogehoge.com";
table.Remove("tom");

 Dictionary

ArrayListの決まった種類のオブジェクト版のListがあるように、
そのHashtable版がDictionary。
Dictionary < クラス名 , クラス名> 変数 = new Dictionary < クラス名 , クラス名 >();
使い方は基本的にHashtableと同じ。

今回は、キーも中身もstring,string です。

using System;
using System.Collections.Generic;

Dictionary<string,string> dict = new Dictionary<string, string>();
dict.Add("tom","tom@hogehoge.com");
dict["tom"] = "tom@hogehoge.com";
dict.Remove("tom");

 

少しでもUnity C#への恐怖が拭たら幸いでっす。

 

f:id:sudara_bluse:20171109182023p:plain