コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】登録順を取得できる Dictionary

ソースコード

using System;
using System.Collections;
using System.Collections.Specialized;

public static class Program
{
    private static void Main()
    {
        // OrderedDictionary を使用すると登録順を取得できます
        var table = new OrderedDictionary
        {
            { 4, "ヒトカゲ" },
            { 5, "リザード" },
            { 6, "リザードン" },
        };

        // foreach で参照
        foreach ( DictionaryEntry n in table )
        {
            Console.WriteLine( n.Key );   // キー
            Console.WriteLine( n.Value ); // 値
        }

        // for で参照
        // インデックスをもとに登録された順番で取得できます
        for ( var i = 0; i < table.Count; i++ )
        {
            var value = table[ i ];
            Console.WriteLine( value ); // 値
        }

        // 末尾に追加
        table.Add( 7, "ゼニガメ" );

        // 指定したキーの要素を削除
        table.Remove( 4 );

        // 指定したインデックスの要素を削除
        table.RemoveAt( 0 );

        // 指定したインデックスに挿入
        table.Insert( 0, 3, "フシギダネ" );
        
        // すべての要素を削除
        table.Clear();
    }
}
  • OrderedDictionary を使用するためにはソースコードの先頭に
    using System.Collections.Specialized; を追加する必要があります
  • 通常の Dictionary と違い、インデックスを使用して値を参照できるため
    for 文を使用することができます