コガネブログ

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

【C#】読み取り専用の Dictionary を使用する方法

ソースコード

using System.Collections.Generic;
using System.Collections.ObjectModel;

public static class Program
{
    private static void Main()
    {
        // 通常の Dictionary
        var table1 = new Dictionary<int, string>
        {
            { 1, "フシギダネ" },
            { 2, "フシギソウ" },
            { 3, "フシギバナ" },
        };
        
        // 読み取り専用の ReadOnlyDictionary 
        // 通常の Dictionary のインスタンスをコンストラクタに渡して初期化する
        var table2 = new ReadOnlyDictionary<int, string>( table1 );

        table2[ 1 ] = "ヒトカゲ";    // コンパイルエラー
        table2.Add( 7, "ゼニガメ" ); // コンパイルエラー
        table2.Remove( 3 );          // コンパイルエラー
    }
}
  • ReadOnlyDictionary は読み取り専用の Dictionary です
  • ソースコードの先頭に using System.Collections.ObjectModel;
    を記述する必要があります