C# の辞書キーとしてのタプル (または配列) 質問する

C# の辞書キーとしてのタプル (または配列) 質問する

C# で辞書ルックアップ テーブルを作成しようとしています。3 つの値の組を 1 つの文字列に解決する必要があります。配列をキーとして使用してみましたが、うまくいきませんでした。他に何をすればよいかわかりません。この時点で、辞書の辞書の辞書を作成することを検討していますが、見た目はあまりきれいではないでしょう。ただし、JavaScript でこれを行う方法です。

ベストアンサー1

.NET 4.0 を使用している場合は、タプルを使用します。

lookup = new Dictionary<Tuple<TypeA, TypeB, TypeC>, string>();

そうでない場合は、 を定義しTupleてそれをキーとして使用できます。タプルはGetHashCodeEqualsおよびをオーバーライドする必要がありますIEquatable

struct Tuple<T, U, W> : IEquatable<Tuple<T,U,W>>
{
    readonly T first;
    readonly U second;
    readonly W third;

    public Tuple(T first, U second, W third)
    {
        this.first = first;
        this.second = second;
        this.third = third;
    }

    public T First { get { return first; } }
    public U Second { get { return second; } }
    public W Third { get { return third; } }

    public override int GetHashCode()
    {
        return first.GetHashCode() ^ second.GetHashCode() ^ third.GetHashCode();
    }

    public override bool Equals(object obj)
    {
        if (obj == null || GetType() != obj.GetType())
        {
            return false;
        }
        return Equals((Tuple<T, U, W>)obj);
    }

    public bool Equals(Tuple<T, U, W> other)
    {
        return other.first.Equals(first) && other.second.Equals(second) && other.third.Equals(third);
    }
}

おすすめ記事