2015年5月27日水曜日

Dictionary型で大小区別なくKeyで値を取得する方法

Dictionary型で大小区別せずKey値を設定したい場合、以下のやり方でできます。


using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        var a = new dic1()
        {
            { "aaa", "123" },
        };
        Console.WriteLine(a["AAA"]);
        Console.ReadKey();
    }
}

class dic1 : Dictionary<string, string>
{
    public dic1()
        : base(StringComparer.InvariantCultureIgnoreCase)
    {
    }
}
enum foo
{
    aa = 1,
    bb,
}
class dic2 : Dictionary<foo, string>
{
    public dic2()
        : base(new fooComparerIgnoreCase())
    {
    }
}

class fooComparerIgnoreCase : IEqualityComparer<foo>
{
    public bool Equals(foo x, foo y)
    {
        return x.Equals(y);
    }

    public int GetHashCode(foo obj)
    {
        return (int)obj;
    }
}

0 件のコメント:

Androider