【ハルシオンブログ】Unity(C#)でDictionaryの紹介。Listばっかり使ってたけどこいつも悪くはねえなぁ
こんにちは!坂内っす。
雨すごいらしいっすね・・・・九州は川も氾濫危険水位に達しているようで・・・・
皆さんお気をつけてくださいませ。
UnityというかC#でDictionaryって使ってます?
ListとかArrayとか配列とかと同じ感じで使えるやつです。
連想配列って言われるらしいです。
使うには、usingが必要になります。
Listとかとの違いは、添え字の代わりに任意のデータ型を使います。
・Listとか
結果は「5」が取れますよね。
この時intAry[2] という感じに、"3番目"に入っている値という感じで、添え字を使うと思います。
これがDictionaryだとこんな感じになります。
・Dictionaryの場合
これも結果は「3」が取れます。
こんな感じで、文字列など(key)でvalueをとる感じになります。
また、keyは同じものを入れることができません。
こういうことができないということです。
ちなみに初期化時に値を入れる場合はこんな感じでできます。
valueの更新はこんな感じ。
特定のkeyがあるかどうかは、こんな感じで判定できます。
また、全体をなめる感じの場合は、foreachでいけますね。
こんな感じで、全部をとることができます。
Dictionaryでは順不動のようで、上記のように全部をなめる時に順番が変わる可能性があるらしいです。
登録した順番に何かの処理をする必要がある場合は、DictionaryではなくList等を使わないといけません。
という感じで、Dictionaryの紹介でした。
では、あでゅ~ノシ
雨すごいらしいっすね・・・・九州は川も氾濫危険水位に達しているようで・・・・
皆さんお気をつけてくださいませ。
UnityというかC#でDictionaryって使ってます?
ListとかArrayとか配列とかと同じ感じで使えるやつです。
連想配列って言われるらしいです。
使うには、usingが必要になります。
using System.Collections.Generic;
Listとかとの違いは、添え字の代わりに任意のデータ型を使います。
・Listとか
List<int> intAry = new List<Int>();
intAry.Add(1);
intAry.Add(3);
intAry.Add(5);
intAry.Add(7);
Debug.Log(intAry[2]);
結果は「5」が取れますよね。
この時intAry[2] という感じに、"3番目"に入っている値という感じで、添え字を使うと思います。
これがDictionaryだとこんな感じになります。
・Dictionaryの場合
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("no1", 1);
dic.Add("no2", 3);
dic.Add("no3", 5);
dic.Add("no4", 7);
Debug.Log(dic["no2"]);
これも結果は「3」が取れます。
こんな感じで、文字列など(key)でvalueをとる感じになります。
また、keyは同じものを入れることができません。
Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("no1", 1);
dic.Add("no2", 3);
dic.Add("no2", 5);
こういうことができないということです。
ちなみに初期化時に値を入れる場合はこんな感じでできます。
Dictionary<string, int> dic = new Dictionary<string, int>()
{
{"no1", 1},
{"no2", 3},
{"no3", 5}
}
valueの更新はこんな感じ。
Dictionary<string, int> dic = new Dictionary<string, int>()
{
{"no1", 1},
{"no2", 3},
{"no3", 5}
}
dic["no2"] = 100;
特定のkeyがあるかどうかは、こんな感じで判定できます。
Dictionary<string, int> dic = new Dictionary<string, int>()
{
{"no1", 1},
{"no2", 3},
{"no3", 5}
}
if(dic.ContainsKey("no2")){
Debug.Log("no2があるので更新");
dic["no2"] = 50;
} else {
Debug.Log("no2がないので追加");
dic,Add("no2", 50);
}
また、全体をなめる感じの場合は、foreachでいけますね。
Dictionary<string, int> dic = new Dictionary<string, int>()
{
{"no1", 1},
{"no2", 3},
{"no3", 5}
}
foreach(Dictionary<string, int> data in dic){
Debug.Log(data.key + ":" + data.value);
}
こんな感じで、全部をとることができます。
Dictionaryでは順不動のようで、上記のように全部をなめる時に順番が変わる可能性があるらしいです。
登録した順番に何かの処理をする必要がある場合は、DictionaryではなくList等を使わないといけません。
という感じで、Dictionaryの紹介でした。
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】Awakeより先にメソッドを呼び出したいとき | 【ハルシオンブログ】Toggleで値を変えたときにonValueChangedで処理したくないとき »
コメント
| h o m e |